// SOFA bundle.
// Reference: http://www.iausofa.org/current.html
// Version: Issue 2023-10-11
//
// This is basically a concatenation of a few files from the SOFA C library to
// compute the Sun and Moon positions: epv00.c s2pv.c obl06.c pfw06.c ir.c
// rz.c cp.c rx.c rxp.c rxpv.c moon98.c
//
// Modifications: function arguments that are not modified are declared as
// const. Static local variables and data that were effectively constants are
// declared as const to make it clear that there is no thread safety issue.
//
// To avoid a clash between the use of the larger SOFA library and this bundle
// in RTKLIB, the functions iauEpv00() and iauMoon98() are renamed removing
// the 'iau' prefix, and the other supporting functions are trivially modified
// to be qualified as 'static' and so not externally visible.
//
// The original files along with their copyright notices are in the
// lib/sofa/src/ directory.

#include <math.h>
#include <stdlib.h>

// A few definitions, from sofam.h

/* Degrees to radians */
#define DD2R (1.745329251994329576923691e-2)

/* Arcseconds to radians */
#define DAS2R (4.848136811095359935899141e-6)

/* Days per Julian year */
#define DJY (365.25)

/* Days per Julian century */
#define DJC (36525.0)

/* Reference epoch (J2000.0), Julian Date */
#define DJ00 (2451545.0)

/* Astronomical unit (m, IAU 2012) */
#define DAU (149597870.7e3)

// From epv00.c, renamed from iauEpv00
int epv00(double date1, double date2, double pvh[2][3], double pvb[2][3])
/*
**  - - - - - - - - -
**   i a u E p v 0 0
**  - - - - - - - - -
**
**  Earth position and velocity, heliocentric and barycentric, with
**  respect to the Barycentric Celestial Reference System.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  support function.
**
**  Given:
**     date1,date2  double        TDB date (Note 1)
**
**  Returned:
**     pvh          double[2][3]  heliocentric Earth position/velocity
**     pvb          double[2][3]  barycentric Earth position/velocity
**
**  Returned (function value):
**                  int           status: 0 = OK
**                                       +1 = warning: date outside
**                                            the range 1900-2100 AD
**
**  Notes:
**
**  1) The TDB date date1+date2 is a Julian Date, apportioned in any
**     convenient way between the two arguments.  For example,
**     JD(TDB)=2450123.7 could be expressed in any of these ways, among
**     others:
**
**            date1          date2
**
**         2450123.7           0.0       (JD method)
**         2451545.0       -1421.3       (J2000 method)
**         2400000.5       50123.2       (MJD method)
**         2450123.5           0.2       (date & time method)
**
**     The JD method is the most natural and convenient to use in cases
**     where the loss of several decimal digits of resolution is
**     acceptable.  The J2000 method is best matched to the way the
**     argument is handled internally and will deliver the optimum
**     resolution.  The MJD method and the date & time methods are both
**     good compromises between resolution and convenience.  However,
**     the accuracy of the result is more likely to be limited by the
**     algorithm itself than the way the date has been expressed.
**
**     n.b. TT can be used instead of TDB in most applications.
**
**  2) On return, the arrays pvh and pvb contain the following:
**
**        pvh[0][0]  x       }
**        pvh[0][1]  y       } heliocentric position, au
**        pvh[0][2]  z       }
**
**        pvh[1][0]  xdot    }
**        pvh[1][1]  ydot    } heliocentric velocity, au/d
**        pvh[1][2]  zdot    }
**
**        pvb[0][0]  x       }
**        pvb[0][1]  y       } barycentric position, au
**        pvb[0][2]  z       }
**
**        pvb[1][0]  xdot    }
**        pvb[1][1]  ydot    } barycentric velocity, au/d
**        pvb[1][2]  zdot    }
**
**     The vectors are with respect to the Barycentric Celestial
**     Reference System.  The time unit is one day in TDB.
**
**  3) The function is a SIMPLIFIED SOLUTION from the planetary theory
**     VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics &
**     Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original
**     Fortran code supplied by P. Bretagnon (private comm., 2000).
**
**  4) Comparisons over the time span 1900-2100 with this simplified
**     solution and the JPL DE405 ephemeris give the following results:
**
**                                RMS    max
**           Heliocentric:
**              position error    3.7   11.2   km
**              velocity error    1.4    5.0   mm/s
**
**           Barycentric:
**              position error    4.6   13.4   km
**              velocity error    1.4    4.9   mm/s
**
**     Comparisons with the JPL DE406 ephemeris show that by 1800 and
**     2200 the position errors are approximately double their 1900-2100
**     size.  By 1500 and 2500 the deterioration is a factor of 10 and
**     by 1000 and 3000 a factor of 60.  The velocity accuracy falls off
**     at about half that rate.
**
**  5) It is permissible to use the same array for pvh and pvb, which
**     will receive the barycentric values.
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  /*
  ** Matrix elements for orienting the analytical model to DE405.
  **
  ** The corresponding Euler angles are:
  **
  **                       d  '  "
  **   1st rotation    -  23 26 21.4091 about the x-axis  (obliquity)
  **   2nd rotation    +         0.0475 about the z-axis  (RA offset)
  **
  ** These were obtained empirically, by comparisons with DE405 over
  ** 1900-2100.
  */
  const double am12 = 0.000000211284, am13 = -0.000000091603, am21 = -0.000000230286,
               am22 = 0.917482137087, am23 = -0.397776982902, am32 = 0.397776982902,
               am33 = 0.917482137087;

  /*
  ** ----------------------
  ** Ephemeris Coefficients
  ** ----------------------
  **
  ** The ephemeris consists of harmonic terms for predicting (i) the Sun
  ** to Earth vector and (ii) the Solar-System-barycenter to Sun vector
  ** respectively.  The coefficients are stored in arrays which, although
  ** 1-demensional, contain groups of three.  Each triplet of
  ** coefficients is the amplitude, phase and frequency for one term in
  ** the model, and each array contains the number of terms called for by
  ** the model.
  **
  ** There are eighteen such arrays, named as follows:
  **
  **     array         model      power of T      component
  **
  **      e0x      Sun-to-Earth        0              x
  **      e0y      Sun-to-Earth        0              y
  **      e0z      Sun-to-Earth        0              z
  **
  **      e1x      Sun-to-Earth        1              x
  **      e1y      Sun-to-Earth        1              y
  **      e1z      Sun-to-Earth        1              z
  **
  **      e2x      Sun-to-Earth        2              x
  **      e2y      Sun-to-Earth        2              y
  **      e2z      Sun-to-Earth        2              z
  **
  **      s0x      SSB-to-Sun          0              x
  **      s0y      SSB-to-Sun          0              y
  **      s0z      SSB-to-Sun          0              z
  **
  **      s1x      SSB-to-Sun          1              x
  **      s1y      SSB-to-Sun          1              y
  **      s1z      SSB-to-Sun          1              z
  **
  **      s2x      SSB-to-Sun          2              x
  **      s2y      SSB-to-Sun          2              y
  **      s2z      SSB-to-Sun          2              z
  */

  /* Sun-to-Earth, T^0, X */
  static const double e0x[] = {
      0.9998292878132e+00, 0.1753485171504e+01, 0.6283075850446e+01, 0.8352579567414e-02,
      0.1710344404582e+01, 0.1256615170089e+02, 0.5611445335148e-02, 0.0000000000000e+00,
      0.0000000000000e+00, 0.1046664295572e-03, 0.1667225416770e+01, 0.1884922755134e+02,
      0.3110842534677e-04, 0.6687513390251e+00, 0.8399684731857e+02, 0.2552413503550e-04,
      0.5830637358413e+00, 0.5296909721118e+00, 0.2137207845781e-04, 0.1092330954011e+01,
      0.1577343543434e+01, 0.1680240182951e-04, 0.4955366134987e+00, 0.6279552690824e+01,
      0.1679012370795e-04, 0.6153014091901e+01, 0.6286599010068e+01, 0.1445526946777e-04,
      0.3472744100492e+01, 0.2352866153506e+01,

      0.1091038246184e-04, 0.3689845786119e+01, 0.5223693906222e+01, 0.9344399733932e-05,
      0.6073934645672e+01, 0.1203646072878e+02, 0.8993182910652e-05, 0.3175705249069e+01,
      0.1021328554739e+02, 0.5665546034116e-05, 0.2152484672246e+01, 0.1059381944224e+01,
      0.6844146703035e-05, 0.1306964099750e+01, 0.5753384878334e+01, 0.7346610905565e-05,
      0.4354980070466e+01, 0.3981490189893e+00, 0.6815396474414e-05, 0.2218229211267e+01,
      0.4705732307012e+01, 0.6112787253053e-05, 0.5384788425458e+01, 0.6812766822558e+01,
      0.4518120711239e-05, 0.6087604012291e+01, 0.5884926831456e+01, 0.4521963430706e-05,
      0.1279424524906e+01, 0.6256777527156e+01,

      0.4497426764085e-05, 0.5369129144266e+01, 0.6309374173736e+01, 0.4062190566959e-05,
      0.5436473303367e+00, 0.6681224869435e+01, 0.5412193480192e-05, 0.7867838528395e+00,
      0.7755226100720e+00, 0.5469839049386e-05, 0.1461440311134e+01, 0.1414349524433e+02,
      0.5205264083477e-05, 0.4432944696116e+01, 0.7860419393880e+01, 0.2149759935455e-05,
      0.4502237496846e+01, 0.1150676975667e+02, 0.2279109618501e-05, 0.1239441308815e+01,
      0.7058598460518e+01, 0.2259282939683e-05, 0.3272430985331e+01, 0.4694002934110e+01,
      0.2558950271319e-05, 0.2265471086404e+01, 0.1216800268190e+02, 0.2561581447555e-05,
      0.1454740653245e+01, 0.7099330490126e+00,

      0.1781441115440e-05, 0.2962068630206e+01, 0.7962980379786e+00, 0.1612005874644e-05,
      0.1473255041006e+01, 0.5486777812467e+01, 0.1818630667105e-05, 0.3743903293447e+00,
      0.6283008715021e+01, 0.1818601377529e-05, 0.6274174354554e+01, 0.6283142985870e+01,
      0.1554475925257e-05, 0.1624110906816e+01, 0.2513230340178e+02, 0.2090948029241e-05,
      0.5852052276256e+01, 0.1179062909082e+02, 0.2000176345460e-05, 0.4072093298513e+01,
      0.1778984560711e+02, 0.1289535917759e-05, 0.5217019331069e+01, 0.7079373888424e+01,
      0.1281135307881e-05, 0.4802054538934e+01, 0.3738761453707e+01, 0.1518229005692e-05,
      0.8691914742502e+00, 0.2132990797783e+00,

      0.9450128579027e-06, 0.4601859529950e+01, 0.1097707878456e+02, 0.7781119494996e-06,
      0.1844352816694e+01, 0.8827390247185e+01, 0.7733407759912e-06, 0.3582790154750e+01,
      0.5507553240374e+01, 0.7350644318120e-06, 0.2695277788230e+01, 0.1589072916335e+01,
      0.6535928827023e-06, 0.3651327986142e+01, 0.1176985366291e+02, 0.6324624183656e-06,
      0.2241302375862e+01, 0.6262300422539e+01, 0.6298565300557e-06, 0.4407122406081e+01,
      0.6303851278352e+01, 0.8587037089179e-06, 0.3024307223119e+01, 0.1672837615881e+03,
      0.8299954491035e-06, 0.6192539428237e+01, 0.3340612434717e+01, 0.6311263503401e-06,
      0.2014758795416e+01, 0.7113454667900e-02,

      0.6005646745452e-06, 0.3399500503397e+01, 0.4136910472696e+01, 0.7917715109929e-06,
      0.2493386877837e+01, 0.6069776770667e+01, 0.7556958099685e-06, 0.4159491740143e+01,
      0.6496374930224e+01, 0.6773228244949e-06, 0.4034162934230e+01, 0.9437762937313e+01,
      0.5370708577847e-06, 0.1562219163734e+01, 0.1194447056968e+01, 0.5710804266203e-06,
      0.2662730803386e+01, 0.6282095334605e+01, 0.5709824583726e-06, 0.3985828430833e+01,
      0.6284056366286e+01, 0.5143950896447e-06, 0.1308144688689e+01, 0.6290189305114e+01,
      0.5088010604546e-06, 0.5352817214804e+01, 0.6275962395778e+01, 0.4960369085172e-06,
      0.2644267922349e+01, 0.6127655567643e+01,

      0.4803137891183e-06, 0.4008844192080e+01, 0.6438496133249e+01, 0.5731747768225e-06,
      0.3794550174597e+01, 0.3154687086868e+01, 0.4735947960579e-06, 0.6107118308982e+01,
      0.3128388763578e+01, 0.4808348796625e-06, 0.4771458618163e+01, 0.8018209333619e+00,
      0.4115073743137e-06, 0.3327111335159e+01, 0.8429241228195e+01, 0.5230575889287e-06,
      0.5305708551694e+01, 0.1336797263425e+02, 0.5133977889215e-06, 0.5784230738814e+01,
      0.1235285262111e+02, 0.5065815825327e-06, 0.2052064793679e+01, 0.1185621865188e+02,
      0.4339831593868e-06, 0.3644994195830e+01, 0.1726015463500e+02, 0.3952928638953e-06,
      0.4930376436758e+01, 0.5481254917084e+01,

      0.4898498111942e-06, 0.4542084219731e+00, 0.9225539266174e+01, 0.4757490209328e-06,
      0.3161126388878e+01, 0.5856477690889e+01, 0.4727701669749e-06, 0.6214993845446e+00,
      0.2544314396739e+01, 0.3800966681863e-06, 0.3040132339297e+01, 0.4265981595566e+00,
      0.3257301077939e-06, 0.8064977360087e+00, 0.3930209696940e+01, 0.3255810528674e-06,
      0.1974147981034e+01, 0.2146165377750e+01, 0.3252029748187e-06, 0.2845924913135e+01,
      0.4164311961999e+01, 0.3255505635308e-06, 0.3017900824120e+01, 0.5088628793478e+01,
      0.2801345211990e-06, 0.6109717793179e+01, 0.1256967486051e+02, 0.3688987740970e-06,
      0.2911550235289e+01, 0.1807370494127e+02,

      0.2475153429458e-06, 0.2179146025856e+01, 0.2629832328990e-01, 0.3033457749150e-06,
      0.1994161050744e+01, 0.4535059491685e+01, 0.2186743763110e-06, 0.5125687237936e+01,
      0.1137170464392e+02, 0.2764777032774e-06, 0.4822646860252e+00, 0.1256262854127e+02,
      0.2199028768592e-06, 0.4637633293831e+01, 0.1255903824622e+02, 0.2046482824760e-06,
      0.1467038733093e+01, 0.7084896783808e+01, 0.2611209147507e-06, 0.3044718783485e+00,
      0.7143069561767e+02, 0.2286079656818e-06, 0.4764220356805e+01, 0.8031092209206e+01,
      0.1855071202587e-06, 0.3383637774428e+01, 0.1748016358760e+01, 0.2324669506784e-06,
      0.6189088449251e+01, 0.1831953657923e+02,

      0.1709528015688e-06, 0.5874966729774e+00, 0.4933208510675e+01, 0.2168156875828e-06,
      0.4302994009132e+01, 0.1044738781244e+02, 0.2106675556535e-06, 0.3800475419891e+01,
      0.7477522907414e+01, 0.1430213830465e-06, 0.1294660846502e+01, 0.2942463415728e+01,
      0.1388396901944e-06, 0.4594797202114e+01, 0.8635942003952e+01, 0.1922258844190e-06,
      0.4943044543591e+00, 0.1729818233119e+02, 0.1888460058292e-06, 0.2426943912028e+01,
      0.1561374759853e+03, 0.1789449386107e-06, 0.1582973303499e+00, 0.1592596075957e+01,
      0.1360803685374e-06, 0.5197240440504e+01, 0.1309584267300e+02, 0.1504038014709e-06,
      0.3120360916217e+01, 0.1649636139783e+02,

      0.1382769533389e-06, 0.6164702888205e+01, 0.7632943190217e+01, 0.1438059769079e-06,
      0.1437423770979e+01, 0.2042657109477e+02, 0.1326303260037e-06, 0.3609688799679e+01,
      0.1213955354133e+02, 0.1159244950540e-06, 0.5463018167225e+01, 0.5331357529664e+01,
      0.1433118149136e-06, 0.6028909912097e+01, 0.7342457794669e+01, 0.1234623148594e-06,
      0.3109645574997e+01, 0.6279485555400e+01, 0.1233949875344e-06, 0.3539359332866e+01,
      0.6286666145492e+01, 0.9927196061299e-07, 0.1259321569772e+01, 0.7234794171227e+01,
      0.1242302191316e-06, 0.1065949392609e+01, 0.1511046609763e+02, 0.1098402195201e-06,
      0.2192508743837e+01, 0.1098880815746e+02,

      0.1158191395315e-06, 0.4054411278650e+01, 0.5729506548653e+01, 0.9048475596241e-07,
      0.5429764748518e+01, 0.9623688285163e+01, 0.8889853269023e-07, 0.5046586206575e+01,
      0.6148010737701e+01, 0.1048694242164e-06, 0.2628858030806e+01, 0.6836645152238e+01,
      0.1112308378646e-06, 0.4177292719907e+01, 0.1572083878776e+02, 0.8631729709901e-07,
      0.1601345232557e+01, 0.6418140963190e+01, 0.8527816951664e-07, 0.2463888997513e+01,
      0.1471231707864e+02, 0.7892139456991e-07, 0.3154022088718e+01, 0.2118763888447e+01,
      0.1051782905236e-06, 0.4795035816088e+01, 0.1349867339771e+01, 0.1048219943164e-06,
      0.2952983395230e+01, 0.5999216516294e+01,

      0.7435760775143e-07, 0.5420547991464e+01, 0.6040347114260e+01, 0.9869574106949e-07,
      0.3695646753667e+01, 0.6566935184597e+01, 0.9156886364226e-07, 0.3922675306609e+01,
      0.5643178611111e+01, 0.7006834356188e-07, 0.1233968624861e+01, 0.6525804586632e+01,
      0.9806170182601e-07, 0.1919542280684e+01, 0.2122839202813e+02, 0.9052289673607e-07,
      0.4615902724369e+01, 0.4690479774488e+01, 0.7554200867893e-07, 0.1236863719072e+01,
      0.1253985337760e+02, 0.8215741286498e-07, 0.3286800101559e+00, 0.1097355562493e+02,
      0.7185178575397e-07, 0.5880942158367e+01, 0.6245048154254e+01, 0.7130726476180e-07,
      0.7674871987661e+00, 0.6321103546637e+01,

      0.6650894461162e-07, 0.6987129150116e+00, 0.5327476111629e+01, 0.7396888823688e-07,
      0.3576824794443e+01, 0.5368044267797e+00, 0.7420588884775e-07, 0.5033615245369e+01,
      0.2354323048545e+02, 0.6141181642908e-07, 0.9449927045673e+00, 0.1296430071988e+02,
      0.6373557924058e-07, 0.6206342280341e+01, 0.9517183207817e+00, 0.6359474329261e-07,
      0.5036079095757e+01, 0.1990745094947e+01, 0.5740173582646e-07, 0.6105106371350e+01,
      0.9555997388169e+00, 0.7019864084602e-07, 0.7237747359018e+00, 0.5225775174439e+00,
      0.6398054487042e-07, 0.3976367969666e+01, 0.2407292145756e+02, 0.7797092650498e-07,
      0.4305423910623e+01, 0.2200391463820e+02,

      0.6466760000900e-07, 0.3500136825200e+01, 0.5230807360890e+01, 0.7529417043890e-07,
      0.3514779246100e+01, 0.1842262939178e+02, 0.6924571140892e-07, 0.2743457928679e+01,
      0.1554202828031e+00, 0.6220798650222e-07, 0.2242598118209e+01, 0.1845107853235e+02,
      0.5870209391853e-07, 0.2332832707527e+01, 0.6398972393349e+00, 0.6263953473888e-07,
      0.2191105358956e+01, 0.6277552955062e+01, 0.6257781390012e-07, 0.4457559396698e+01,
      0.6288598745829e+01, 0.5697304945123e-07, 0.3499234761404e+01, 0.1551045220144e+01,
      0.6335438746791e-07, 0.6441691079251e+00, 0.5216580451554e+01, 0.6377258441152e-07,
      0.2252599151092e+01, 0.5650292065779e+01,

      0.6484841818165e-07, 0.1992812417646e+01, 0.1030928125552e+00, 0.4735551485250e-07,
      0.3744672082942e+01, 0.1431416805965e+02, 0.4628595996170e-07, 0.1334226211745e+01,
      0.5535693017924e+00, 0.6258152336933e-07, 0.4395836159154e+01, 0.2608790314060e+02,
      0.6196171366594e-07, 0.2587043007997e+01, 0.8467247584405e+02, 0.6159556952126e-07,
      0.4782499769128e+01, 0.2394243902548e+03, 0.4987741172394e-07, 0.7312257619924e+00,
      0.7771377146812e+02, 0.5459280703142e-07, 0.3001376372532e+01, 0.6179983037890e+01,
      0.4863461189999e-07, 0.3767222128541e+01, 0.9027992316901e+02, 0.5349912093158e-07,
      0.3663594450273e+01, 0.6386168663001e+01,

      0.5673725607806e-07, 0.4331187919049e+01, 0.6915859635113e+01, 0.4745485060512e-07,
      0.5816195745518e+01, 0.6282970628506e+01, 0.4745379005326e-07, 0.8323672435672e+00,
      0.6283181072386e+01, 0.4049002796321e-07, 0.3785023976293e+01, 0.6254626709878e+01,
      0.4247084014515e-07, 0.2378220728783e+01, 0.7875671926403e+01, 0.4026912363055e-07,
      0.2864103423269e+01, 0.6311524991013e+01, 0.4062935011774e-07, 0.2415408595975e+01,
      0.3634620989887e+01, 0.5347771048509e-07, 0.3343479309801e+01, 0.2515860172507e+02,
      0.4829494136505e-07, 0.2821742398262e+01, 0.5760498333002e+01, 0.4342554404599e-07,
      0.5624662458712e+01, 0.7238675589263e+01,

      0.4021599184361e-07, 0.5557250275009e+00, 0.1101510648075e+02, 0.4104900474558e-07,
      0.3296691780005e+01, 0.6709674010002e+01, 0.4376532905131e-07, 0.3814443999443e+01,
      0.6805653367890e+01, 0.3314590480650e-07, 0.3560229189250e+01, 0.1259245002418e+02,
      0.3232421839643e-07, 0.5185389180568e+01, 0.1066495398892e+01, 0.3541176318876e-07,
      0.3921381909679e+01, 0.9917696840332e+01, 0.3689831242681e-07, 0.4190658955386e+01,
      0.1192625446156e+02, 0.3890605376774e-07, 0.5546023371097e+01, 0.7478166569050e-01,
      0.3038559339780e-07, 0.6231032794494e+01, 0.1256621883632e+02, 0.3137083969782e-07,
      0.6207063419190e+01, 0.4292330755499e+01,

      0.4024004081854e-07, 0.1195257375713e+01, 0.1334167431096e+02, 0.3300234879283e-07,
      0.1804694240998e+01, 0.1057540660594e+02, 0.3635399155575e-07, 0.5597811343500e+01,
      0.6208294184755e+01, 0.3032668691356e-07, 0.3191059366530e+01, 0.1805292951336e+02,
      0.2809652069058e-07, 0.4094348032570e+01, 0.3523159621801e-02, 0.3696955383823e-07,
      0.5219282738794e+01, 0.5966683958112e+01, 0.3562894142503e-07, 0.1037247544554e+01,
      0.6357857516136e+01, 0.3510598524148e-07, 0.1430020816116e+01, 0.6599467742779e+01,
      0.3617736142953e-07, 0.3002911403677e+01, 0.6019991944201e+01, 0.2624524910730e-07,
      0.2437046757292e+01, 0.6702560555334e+01,

      0.2535824204490e-07, 0.1581594689647e+01, 0.3141537925223e+02, 0.3519787226257e-07,
      0.5379863121521e+01, 0.2505706758577e+03, 0.2578406709982e-07, 0.4904222639329e+01,
      0.1673046366289e+02, 0.3423887981473e-07, 0.3646448997315e+01, 0.6546159756691e+01,
      0.2776083886467e-07, 0.3307829300144e+01, 0.1272157198369e+02, 0.3379592818379e-07,
      0.1747541251125e+01, 0.1494531617769e+02, 0.3050255426284e-07, 0.1784689432607e-01,
      0.4732030630302e+01, 0.2652378350236e-07, 0.4420055276260e+01, 0.5863591145557e+01,
      0.2374498173768e-07, 0.3629773929208e+01, 0.2388894113936e+01, 0.2716451255140e-07,
      0.3079623706780e+01, 0.1202934727411e+02,

      0.3038583699229e-07, 0.3312487903507e+00, 0.1256608456547e+02, 0.2220681228760e-07,
      0.5265520401774e+01, 0.1336244973887e+02, 0.3044156540912e-07, 0.4766664081250e+01,
      0.2908881142201e+02, 0.2731859923561e-07, 0.5069146530691e+01, 0.1391601904066e+02,
      0.2285603018171e-07, 0.5954935112271e+01, 0.6076890225335e+01, 0.2025006454555e-07,
      0.4061789589267e+01, 0.4701116388778e+01, 0.2012597519804e-07, 0.2485047705241e+01,
      0.6262720680387e+01, 0.2003406962258e-07, 0.4163779209320e+01, 0.6303431020504e+01,
      0.2207863441371e-07, 0.6923839133828e+00, 0.6489261475556e+01, 0.2481374305624e-07,
      0.5944173595676e+01, 0.1204357418345e+02,

      0.2130923288870e-07, 0.4641013671967e+01, 0.5746271423666e+01, 0.2446370543391e-07,
      0.6125796518757e+01, 0.1495633313810e+00, 0.1932492759052e-07, 0.2234572324504e+00,
      0.1352175143971e+02, 0.2600122568049e-07, 0.4281012405440e+01, 0.4590910121555e+01,
      0.2431754047488e-07, 0.1429943874870e+00, 0.1162474756779e+01, 0.1875902869209e-07,
      0.9781803816948e+00, 0.6279194432410e+01, 0.1874381139426e-07, 0.5670368130173e+01,
      0.6286957268481e+01, 0.2156696047173e-07, 0.2008985006833e+01, 0.1813929450232e+02,
      0.1965076182484e-07, 0.2566186202453e+00, 0.4686889479442e+01, 0.2334816372359e-07,
      0.4408121891493e+01, 0.1002183730415e+02,

      0.1869937408802e-07, 0.5272745038656e+01, 0.2427287361862e+00, 0.2436236460883e-07,
      0.4407720479029e+01, 0.9514313292143e+02, 0.1761365216611e-07, 0.1943892315074e+00,
      0.1351787002167e+02, 0.2156289480503e-07, 0.1418570924545e+01, 0.6037244212485e+01,
      0.2164748979255e-07, 0.4724603439430e+01, 0.2301353951334e+02, 0.2222286670853e-07,
      0.2400266874598e+01, 0.1266924451345e+02, 0.2070901414929e-07, 0.5230348028732e+01,
      0.6528907488406e+01, 0.1792745177020e-07, 0.2099190328945e+01, 0.6819880277225e+01,
      0.1841802068445e-07, 0.3467527844848e+00, 0.6514761976723e+02, 0.1578401631718e-07,
      0.7098642356340e+00, 0.2077542790660e-01,

      0.1561690152531e-07, 0.5943349620372e+01, 0.6272439236156e+01, 0.1558591045463e-07,
      0.7040653478980e+00, 0.6293712464735e+01, 0.1737356469576e-07, 0.4487064760345e+01,
      0.1765478049437e+02, 0.1434755619991e-07, 0.2993391570995e+01, 0.1102062672231e+00,
      0.1482187806654e-07, 0.2278049198251e+01, 0.1052268489556e+01, 0.1424812827089e-07,
      0.1682114725827e+01, 0.1311972100268e+02, 0.1380282448623e-07, 0.3262668602579e+01,
      0.1017725758696e+02, 0.1811481244566e-07, 0.3187771221777e+01, 0.1887552587463e+02,
      0.1504446185696e-07, 0.5650162308647e+01, 0.7626583626240e-01, 0.1740776154137e-07,
      0.5487068607507e+01, 0.1965104848470e+02,

      0.1374339536251e-07, 0.5745688172201e+01, 0.6016468784579e+01, 0.1761377477704e-07,
      0.5748060203659e+01, 0.2593412433514e+02, 0.1535138225795e-07, 0.6226848505790e+01,
      0.9411464614024e+01, 0.1788140543676e-07, 0.6189318878563e+01, 0.3301902111895e+02,
      0.1375002807996e-07, 0.5371812884394e+01, 0.6327837846670e+00, 0.1242115758632e-07,
      0.1471687569712e+01, 0.3894181736510e+01, 0.1450977333938e-07, 0.4143836662127e+01,
      0.1277945078067e+02, 0.1297579575023e-07, 0.9003477661957e+00, 0.6549682916313e+01,
      0.1462667934821e-07, 0.5760505536428e+01, 0.1863592847156e+02, 0.1381774374799e-07,
      0.1085471729463e+01, 0.2379164476796e+01,

      0.1682333169307e-07, 0.5409870870133e+01, 0.1620077269078e+02, 0.1190812918837e-07,
      0.1397205174601e+01, 0.1149965630200e+02, 0.1221434762106e-07, 0.9001804809095e+00,
      0.1257326515556e+02, 0.1549934644860e-07, 0.4262528275544e+01, 0.1820933031200e+02,
      0.1252138953050e-07, 0.1411642012027e+01, 0.6993008899458e+01, 0.1237078905387e-07,
      0.2844472403615e+01, 0.2435678079171e+02, 0.1446953389615e-07, 0.5295835522223e+01,
      0.3813291813120e-01, 0.1388446457170e-07, 0.4969428135497e+01, 0.2458316379602e+00,
      0.1019339179228e-07, 0.2491369561806e+01, 0.6112403035119e+01, 0.1258880815343e-07,
      0.4679426248976e+01, 0.5429879531333e+01,

      0.1297768238261e-07, 0.1074509953328e+01, 0.1249137003520e+02, 0.9913505718094e-08,
      0.4735097918224e+01, 0.6247047890016e+01, 0.9830453155969e-08, 0.4158649187338e+01,
      0.6453748665772e+01, 0.1192615865309e-07, 0.3438208613699e+01, 0.6290122169689e+01,
      0.9835874798277e-08, 0.1913300781229e+01, 0.6319103810876e+01, 0.9639087569277e-08,
      0.9487683644125e+00, 0.8273820945392e+01, 0.1175716107001e-07, 0.3228141664287e+01,
      0.6276029531202e+01, 0.1018926508678e-07, 0.2216607854300e+01, 0.1254537627298e+02,
      0.9500087869225e-08, 0.2625116459733e+01, 0.1256517118505e+02, 0.9664192916575e-08,
      0.5860562449214e+01, 0.6259197520765e+01,

      0.9612858712203e-08, 0.7885682917381e+00, 0.6306954180126e+01, 0.1117645675413e-07,
      0.3932148831189e+01, 0.1779695906178e+02, 0.1158864052160e-07, 0.9995605521691e+00,
      0.1778273215245e+02, 0.9021043467028e-08, 0.5263769742673e+01, 0.6172869583223e+01,
      0.8836134773563e-08, 0.1496843220365e+01, 0.1692165728891e+01, 0.1045872200691e-07,
      0.7009039517214e+00, 0.2204125344462e+00, 0.1211463487798e-07, 0.4041544938511e+01,
      0.8257698122054e+02, 0.8541990804094e-08, 0.1447586692316e+01, 0.6393282117669e+01,
      0.1038720703636e-07, 0.4594249718112e+00, 0.1550861511662e+02, 0.1126722351445e-07,
      0.3925550579036e+01, 0.2061856251104e+00,

      0.8697373859631e-08, 0.4411341856037e+01, 0.9491756770005e+00, 0.8869380028441e-08,
      0.2402659724813e+01, 0.3903911373650e+01, 0.9247014693258e-08, 0.1401579743423e+01,
      0.6267823317922e+01, 0.9205062930950e-08, 0.5245978000814e+01, 0.6298328382969e+01,
      0.8000745038049e-08, 0.3590803356945e+01, 0.2648454860559e+01, 0.9168973650819e-08,
      0.2470150501679e+01, 0.1498544001348e+03, 0.1075444949238e-07, 0.1328606161230e+01,
      0.3694923081589e+02, 0.7817298525817e-08, 0.6162256225998e+01, 0.4804209201333e+01,
      0.9541469226356e-08, 0.3942568967039e+01, 0.1256713221673e+02, 0.9821910122027e-08,
      0.2360246287233e+00, 0.1140367694411e+02,

      0.9897822023777e-08, 0.4619805634280e+01, 0.2280573557157e+02, 0.7737289283765e-08,
      0.3784727847451e+01, 0.7834121070590e+01, 0.9260204034710e-08, 0.2223352487601e+01,
      0.2787043132925e+01, 0.7320252888486e-08, 0.1288694636874e+01, 0.6282655592598e+01,
      0.7319785780946e-08, 0.5359869567774e+01, 0.6283496108294e+01, 0.7147219933778e-08,
      0.5516616675856e+01, 0.1725663147538e+02, 0.7946502829878e-08, 0.2630459984567e+01,
      0.1241073141809e+02, 0.9001711808932e-08, 0.2849815827227e+01, 0.6281591679874e+01,
      0.8994041507257e-08, 0.3795244450750e+01, 0.6284560021018e+01, 0.8298582787358e-08,
      0.5236413127363e+00, 0.1241658836951e+02,

      0.8526596520710e-08, 0.4794605424426e+01, 0.1098419223922e+02, 0.8209822103197e-08,
      0.1578752370328e+01, 0.1096996532989e+02, 0.6357049861094e-08, 0.5708926113761e+01,
      0.1596186371003e+01, 0.7370473179049e-08, 0.3842402530241e+01, 0.4061219149443e+01,
      0.7232154664726e-08, 0.3067548981535e+01, 0.1610006857377e+03, 0.6328765494903e-08,
      0.1313930030069e+01, 0.1193336791622e+02, 0.8030064908595e-08, 0.3488500408886e+01,
      0.8460828644453e+00, 0.6275464259232e-08, 0.1532061626198e+01, 0.8531963191132e+00,
      0.7051897446325e-08, 0.3285859929993e+01, 0.5849364236221e+01, 0.6161593705428e-08,
      0.1477341999464e+01, 0.5573142801433e+01,

      0.7754683957278e-08, 0.1586118663096e+01, 0.8662240327241e+01, 0.5889928990701e-08,
      0.1304887868803e+01, 0.1232342296471e+02, 0.5705756047075e-08, 0.4555333589350e+01,
      0.1258692712880e+02, 0.5964178808332e-08, 0.3001762842062e+01, 0.5333900173445e+01,
      0.6712446027467e-08, 0.4886780007595e+01, 0.1171295538178e+02, 0.5941809275464e-08,
      0.4701509603824e+01, 0.9779108567966e+01, 0.5466993627395e-08, 0.4588357817278e+01,
      0.1884211409667e+02, 0.6340512090980e-08, 0.1164543038893e+01, 0.5217580628120e+02,
      0.6325505710045e-08, 0.3919171259645e+01, 0.1041998632314e+02, 0.6164789509685e-08,
      0.2143828253542e+01, 0.6151533897323e+01,

      0.5263330812430e-08, 0.6066564434241e+01, 0.1885275071096e+02, 0.5597087780221e-08,
      0.2926316429472e+01, 0.4337116142245e+00, 0.5396556236817e-08, 0.3244303591505e+01,
      0.6286362197481e+01, 0.5396615148223e-08, 0.3404304703662e+01, 0.6279789503410e+01,
      0.7091832443341e-08, 0.8532377803192e+00, 0.4907302013889e+01, 0.6572352589782e-08,
      0.4901966774419e+01, 0.1176433076753e+02, 0.5960236060795e-08, 0.1874672315797e+01,
      0.1422690933580e-01, 0.5125480043511e-08, 0.3735726064334e+01, 0.1245594543367e+02,
      0.5928241866410e-08, 0.4502033899935e+01, 0.6414617803568e+01, 0.5249600357424e-08,
      0.4372334799878e+01, 0.1151388321134e+02,

      0.6059171276087e-08, 0.2581617302908e+01, 0.6062663316000e+01, 0.5295235081662e-08,
      0.2974811513158e+01, 0.3496032717521e+01, 0.5820561875933e-08, 0.1796073748244e+00,
      0.2838593341516e+00, 0.4754696606440e-08, 0.1981998136973e+01, 0.3104930017775e+01,
      0.6385053548955e-08, 0.2559174171605e+00, 0.6133512519065e+01, 0.6589828273941e-08,
      0.2750967106776e+01, 0.4087944051283e+02, 0.5383376567189e-08, 0.6325947523578e+00,
      0.2248384854122e+02, 0.5928941683538e-08, 0.1672304519067e+01, 0.1581959461667e+01,
      0.4816060709794e-08, 0.3512566172575e+01, 0.9388005868221e+01, 0.6003381586512e-08,
      0.5610932219189e+01, 0.5326786718777e+01,

      0.5504225393105e-08, 0.4037501131256e+01, 0.6503488384892e+01, 0.5353772620129e-08,
      0.6122774968240e+01, 0.1735668374386e+03, 0.5786253768544e-08, 0.5527984999515e+01,
      0.1350651127443e+00, 0.5065706702002e-08, 0.9980765573624e+00, 0.1248988586463e+02,
      0.5972838885276e-08, 0.6044489493203e+01, 0.2673594526851e+02, 0.5323585877961e-08,
      0.3924265998147e+01, 0.4171425416666e+01, 0.5210772682858e-08, 0.6220111376901e+01,
      0.2460261242967e+02, 0.4726549040535e-08, 0.3716043206862e+01, 0.7232251527446e+01,
      0.6029425105059e-08, 0.8548704071116e+00, 0.3227113045244e+03, 0.4481542826513e-08,
      0.1426925072829e+01, 0.5547199253223e+01,

      0.5836024505068e-08, 0.7135651752625e-01, 0.7285056171570e+02, 0.4137046613272e-08,
      0.5330767643283e+01, 0.1087398597200e+02, 0.5171977473924e-08, 0.4494262335353e+00,
      0.1884570439172e+02, 0.5694429833732e-08, 0.2952369582215e+01, 0.9723862754494e+02,
      0.4009158925298e-08, 0.3500003416535e+01, 0.6244942932314e+01, 0.4784939596873e-08,
      0.6196709413181e+01, 0.2929661536378e+02, 0.3983725022610e-08, 0.5103690031897e+01,
      0.4274518229222e+01, 0.3870535232462e-08, 0.3187569587401e+01, 0.6321208768577e+01,
      0.5140501213951e-08, 0.1668924357457e+01, 0.1232032006293e+02, 0.3849034819355e-08,
      0.4445722510309e+01, 0.1726726808967e+02,

      0.4002383075060e-08, 0.5226224152423e+01, 0.7018952447668e+01, 0.3890719543549e-08,
      0.4371166550274e+01, 0.1491901785440e+02, 0.4887084607881e-08, 0.5973556689693e+01,
      0.1478866649112e+01, 0.3739939287592e-08, 0.2089084714600e+01, 0.6922973089781e+01,
      0.5031925918209e-08, 0.4658371936827e+01, 0.1715706182245e+02, 0.4387748764954e-08,
      0.4825580552819e+01, 0.2331413144044e+03, 0.4147398098865e-08, 0.3739003524998e+01,
      0.1376059875786e+02, 0.3719089993586e-08, 0.1148941386536e+01, 0.6297302759782e+01,
      0.3934238461056e-08, 0.1559893008343e+01, 0.7872148766781e+01, 0.3672471375622e-08,
      0.5516145383612e+01, 0.6268848941110e+01,

      0.3768911277583e-08, 0.6116053700563e+01, 0.4157198507331e+01, 0.4033388417295e-08,
      0.5076821746017e+01, 0.1567108171867e+02, 0.3764194617832e-08, 0.8164676232075e+00,
      0.3185192151914e+01, 0.4840628226284e-08, 0.1360479453671e+01, 0.1252801878276e+02,
      0.4949443923785e-08, 0.2725622229926e+01, 0.1617106187867e+03, 0.4117393089971e-08,
      0.6054459628492e+00, 0.5642198095270e+01, 0.3925754020428e-08, 0.8570462135210e+00,
      0.2139354194808e+02, 0.3630551757923e-08, 0.3552067338279e+01, 0.6294805223347e+01,
      0.3627274802357e-08, 0.3096565085313e+01, 0.6271346477544e+01, 0.3806143885093e-08,
      0.6367751709777e+00, 0.1725304118033e+02,

      0.4433254641565e-08, 0.4848461503937e+01, 0.7445550607224e+01, 0.3712319846576e-08,
      0.1331950643655e+01, 0.4194847048887e+00, 0.3849847534783e-08, 0.4958368297746e+00,
      0.9562891316684e+00, 0.3483955430165e-08, 0.2237215515707e+01, 0.1161697602389e+02,
      0.3961912730982e-08, 0.3332402188575e+01, 0.2277943724828e+02, 0.3419978244481e-08,
      0.5785600576016e+01, 0.1362553364512e+02, 0.3329417758177e-08, 0.9812676559709e-01,
      0.1685848245639e+02, 0.4207206893193e-08, 0.9494780468236e+00, 0.2986433403208e+02,
      0.3268548976410e-08, 0.1739332095686e+00, 0.5749861718712e+01, 0.3321880082685e-08,
      0.1423354800666e+01, 0.6279143387820e+01,

      0.4503173010852e-08, 0.2314972675293e+00, 0.1385561574497e+01, 0.4316599090954e-08,
      0.1012646782616e+00, 0.4176041334900e+01, 0.3283493323850e-08, 0.5233306881265e+01,
      0.6287008313071e+01, 0.3164033542343e-08, 0.4005597257511e+01, 0.2099539292909e+02,
      0.4159720956725e-08, 0.5365676242020e+01, 0.5905702259363e+01, 0.3565176892217e-08,
      0.4284440620612e+01, 0.3932462625300e-02, 0.3514440950221e-08, 0.4270562636575e+01,
      0.7335344340001e+01, 0.3540596871909e-08, 0.5953553201060e+01, 0.1234573916645e+02,
      0.2960769905118e-08, 0.1115180417718e+01, 0.2670964694522e+02, 0.2962213739684e-08,
      0.3863811918186e+01, 0.6408777551755e+00,

      0.3883556700251e-08, 0.1268617928302e+01, 0.6660449441528e+01, 0.2919225516346e-08,
      0.4908605223265e+01, 0.1375773836557e+01, 0.3115158863370e-08, 0.3744519976885e+01,
      0.3802769619140e-01, 0.4099438144212e-08, 0.4173244670532e+01, 0.4480965020977e+02,
      0.2899531858964e-08, 0.5910601428850e+01, 0.2059724391010e+02, 0.3289733429855e-08,
      0.2488050078239e+01, 0.1081813534213e+02, 0.3933075612875e-08, 0.1122363652883e+01,
      0.3773735910827e+00, 0.3021403764467e-08, 0.4951973724904e+01, 0.2982630633589e+02,
      0.2798598949757e-08, 0.5117057845513e+01, 0.1937891852345e+02, 0.3397421302707e-08,
      0.6104159180476e+01, 0.6923953605621e+01,

      0.3720398002179e-08, 0.1184933429829e+01, 0.3066615496545e+02, 0.3598484186267e-08,
      0.3505282086105e+01, 0.6147450479709e+01, 0.3694594027310e-08, 0.2286651088141e+01,
      0.2636725487657e+01, 0.2680444152969e-08, 0.1871816775482e+00, 0.6816289982179e+01,
      0.3497574865641e-08, 0.3143251755431e+01, 0.6418701221183e+01, 0.3130274129494e-08,
      0.2462167316018e+01, 0.1235996607578e+02, 0.3241119069551e-08, 0.4256374004686e+01,
      0.1652265972112e+02, 0.2601960842061e-08, 0.4970362941425e+01, 0.1045450126711e+02,
      0.2690601527504e-08, 0.2372657824898e+01, 0.3163918923335e+00, 0.2908688152664e-08,
      0.4232652627721e+01, 0.2828699048865e+02,

      0.3120456131875e-08, 0.3925747001137e+00, 0.2195415756911e+02, 0.3148855423384e-08,
      0.3093478330445e+01, 0.1172006883645e+02, 0.3051044261017e-08, 0.5560948248212e+01,
      0.6055599646783e+01, 0.2826006876660e-08, 0.5072790310072e+01, 0.5120601093667e+01,
      0.3100034191711e-08, 0.4998530231096e+01, 0.1799603123222e+02, 0.2398771640101e-08,
      0.2561739802176e+01, 0.6255674361143e+01, 0.2384002842728e-08, 0.4087420284111e+01,
      0.6310477339748e+01, 0.2842146517568e-08, 0.2515048217955e+01, 0.5469525544182e+01,
      0.2847674371340e-08, 0.5235326497443e+01, 0.1034429499989e+02, 0.2903722140764e-08,
      0.1088200795797e+01, 0.6510552054109e+01,

      0.3187610710605e-08, 0.4710624424816e+01, 0.1693792562116e+03, 0.3048869992813e-08,
      0.2857975896445e+00, 0.8390110365991e+01, 0.2860216950984e-08, 0.2241619020815e+01,
      0.2243449970715e+00, 0.2701117683113e-08, 0.6651573305272e-01, 0.6129297044991e+01,
      0.2509891590152e-08, 0.1285135324585e+01, 0.1044027435778e+02, 0.2623200252223e-08,
      0.2981229834530e+00, 0.6436854655901e+01, 0.2622541669202e-08, 0.6122470726189e+01,
      0.9380959548977e+01, 0.2818435667099e-08, 0.4251087148947e+01, 0.5934151399930e+01,
      0.2365196797465e-08, 0.3465070460790e+01, 0.2470570524223e+02, 0.2358704646143e-08,
      0.5791603815350e+01, 0.8671969964381e+01,

      0.2388299481390e-08, 0.4142483772941e+01, 0.7096626156709e+01, 0.1996041217224e-08,
      0.2101901889496e+01, 0.1727188400790e+02, 0.2687593060336e-08, 0.1526689456959e+01,
      0.7075506709219e+02, 0.2618913670810e-08, 0.2397684236095e+01, 0.6632000300961e+01,
      0.2571523050364e-08, 0.5751929456787e+00, 0.6206810014183e+01, 0.2582135006946e-08,
      0.5595464352926e+01, 0.4873985990671e+02, 0.2372530190361e-08, 0.5092689490655e+01,
      0.1590676413561e+02, 0.2357178484712e-08, 0.4444363527851e+01, 0.3097883698531e+01,
      0.2451590394723e-08, 0.3108251687661e+01, 0.6612329252343e+00, 0.2370045949608e-08,
      0.2608133861079e+01, 0.3459636466239e+02,

      0.2268997267358e-08, 0.3639717753384e+01, 0.2844914056730e-01, 0.1731432137906e-08,
      0.1741898445707e+00, 0.2019909489111e+02, 0.1629869741622e-08, 0.3902225646724e+01,
      0.3035599730800e+02, 0.2206215801974e-08, 0.4971131250731e+01, 0.6281667977667e+01,
      0.2205469554680e-08, 0.1677462357110e+01, 0.6284483723224e+01, 0.2148792362509e-08,
      0.4236259604006e+01, 0.1980482729015e+02, 0.1873733657847e-08, 0.5926814998687e+01,
      0.2876692439167e+02, 0.2026573758959e-08, 0.4349643351962e+01, 0.2449240616245e+02,
      0.1807770325110e-08, 0.5700940482701e+01, 0.2045286941806e+02, 0.1881174408581e-08,
      0.6601286363430e+00, 0.2358125818164e+02,

      0.1368023671690e-08, 0.2211098592752e+01, 0.2473415438279e+02, 0.1720017916280e-08,
      0.4942488551129e+01, 0.1679593901136e+03, 0.1702427665131e-08, 0.1452233856386e+01,
      0.3338575901272e+03, 0.1414032510054e-08, 0.5525357721439e+01, 0.1624205518357e+03,
      0.1652626045364e-08, 0.4108794283624e+01, 0.8956999012000e+02, 0.1642957769686e-08,
      0.7344335209984e+00, 0.5267006960365e+02, 0.1614952403624e-08, 0.3541213951363e+01,
      0.3332657872986e+02, 0.1535988291188e-08, 0.4031094072151e+01, 0.3852657435933e+02,
      0.1593193738177e-08, 0.4185136203609e+01, 0.2282781046519e+03, 0.1074569126382e-08,
      0.1720485636868e+01, 0.8397383534231e+02,

      0.1074408214509e-08, 0.2758613420318e+01, 0.8401985929482e+02, 0.9700199670465e-09,
      0.4216686842097e+01, 0.7826370942180e+02, 0.1258433517061e-08, 0.2575068876639e+00,
      0.3115650189215e+03, 0.1240303229539e-08, 0.4800844956756e+00, 0.1784300471910e+03,
      0.9018345948127e-09, 0.3896756361552e+00, 0.5886454391678e+02, 0.1135301432805e-08,
      0.3700805023550e+00, 0.7842370451713e+02, 0.9215887951370e-09, 0.4364579276638e+01,
      0.1014262087719e+03, 0.1055401054147e-08, 0.2156564222111e+01, 0.5660027930059e+02,
      0.1008725979831e-08, 0.5454015785234e+01, 0.4245678405627e+02, 0.7217398104321e-09,
      0.1597772562175e+01, 0.2457074661053e+03,

      0.6912033134447e-09, 0.5824090621461e+01, 0.1679936946371e+03, 0.6833881523549e-09,
      0.3578778482835e+01, 0.6053048899753e+02, 0.4887304205142e-09, 0.3724362812423e+01,
      0.9656299901946e+02, 0.5173709754788e-09, 0.5422427507933e+01, 0.2442876000072e+03,
      0.4671353097145e-09, 0.2396106924439e+01, 0.1435713242844e+03, 0.5652608439480e-09,
      0.2804028838685e+01, 0.8365903305582e+02, 0.5604061331253e-09, 0.1638816006247e+01,
      0.8433466158131e+02, 0.4712723365400e-09, 0.8979003224474e+00, 0.3164282286739e+03,
      0.4909967465112e-09, 0.3210426725516e+01, 0.4059982187939e+03, 0.4771358267658e-09,
      0.5308027211629e+01, 0.1805255418145e+03,

      0.3943451445989e-09, 0.2195145341074e+01, 0.2568537517081e+03, 0.3952109120244e-09,
      0.5081189491586e+01, 0.2449975330562e+03, 0.3788134594789e-09, 0.4345171264441e+01,
      0.1568131045107e+03, 0.3738330190479e-09, 0.2613062847997e+01, 0.3948519331910e+03,
      0.3099866678136e-09, 0.2846760817689e+01, 0.1547176098872e+03, 0.2002962716768e-09,
      0.4921360989412e+01, 0.2268582385539e+03, 0.2198291338754e-09, 0.1130360117454e+00,
      0.1658638954901e+03, 0.1491958330784e-09, 0.4228195232278e+01, 0.2219950288015e+03,
      0.1475384076173e-09, 0.3005721811604e+00, 0.3052819430710e+03, 0.1661626624624e-09,
      0.7830125621203e+00, 0.2526661704812e+03,

      0.9015823460025e-10, 0.3807792942715e+01, 0.4171445043968e+03};

  /* Sun-to-Earth, T^0, Y */
  static const double e0y[] = {
      0.9998921098898e+00, 0.1826583913846e+00, 0.6283075850446e+01, -0.2442700893735e-01,
      0.0000000000000e+00, 0.0000000000000e+00, 0.8352929742915e-02, 0.1395277998680e+00,
      0.1256615170089e+02, 0.1046697300177e-03, 0.9641423109763e-01, 0.1884922755134e+02,
      0.3110841876663e-04, 0.5381140401712e+01, 0.8399684731857e+02, 0.2570269094593e-04,
      0.5301016407128e+01, 0.5296909721118e+00, 0.2147389623610e-04, 0.2662510869850e+01,
      0.1577343543434e+01, 0.1680344384050e-04, 0.5207904119704e+01, 0.6279552690824e+01,
      0.1679117312193e-04, 0.4582187486968e+01, 0.6286599010068e+01, 0.1440512068440e-04,
      0.1900688517726e+01, 0.2352866153506e+01,

      0.1135139664999e-04, 0.5273108538556e+01, 0.5223693906222e+01, 0.9345482571018e-05,
      0.4503047687738e+01, 0.1203646072878e+02, 0.9007418719568e-05, 0.1605621059637e+01,
      0.1021328554739e+02, 0.5671536712314e-05, 0.5812849070861e+00, 0.1059381944224e+01,
      0.7451401861666e-05, 0.2807346794836e+01, 0.3981490189893e+00, 0.6393470057114e-05,
      0.6029224133855e+01, 0.5753384878334e+01, 0.6814275881697e-05, 0.6472990145974e+00,
      0.4705732307012e+01, 0.6113705628887e-05, 0.3813843419700e+01, 0.6812766822558e+01,
      0.4503851367273e-05, 0.4527804370996e+01, 0.5884926831456e+01, 0.4522249141926e-05,
      0.5991783029224e+01, 0.6256777527156e+01,

      0.4501794307018e-05, 0.3798703844397e+01, 0.6309374173736e+01, 0.5514927480180e-05,
      0.3961257833388e+01, 0.5507553240374e+01, 0.4062862799995e-05, 0.5256247296369e+01,
      0.6681224869435e+01, 0.5414900429712e-05, 0.5499032014097e+01, 0.7755226100720e+00,
      0.5463153987424e-05, 0.6173092454097e+01, 0.1414349524433e+02, 0.5071611859329e-05,
      0.2870244247651e+01, 0.7860419393880e+01, 0.2195112094455e-05, 0.2952338617201e+01,
      0.1150676975667e+02, 0.2279139233919e-05, 0.5951775132933e+01, 0.7058598460518e+01,
      0.2278386100876e-05, 0.4845456398785e+01, 0.4694002934110e+01, 0.2559088003308e-05,
      0.6945321117311e+00, 0.1216800268190e+02,

      0.2561079286856e-05, 0.6167224608301e+01, 0.7099330490126e+00, 0.1792755796387e-05,
      0.1400122509632e+01, 0.7962980379786e+00, 0.1818715656502e-05, 0.4703347611830e+01,
      0.6283142985870e+01, 0.1818744924791e-05, 0.5086748900237e+01, 0.6283008715021e+01,
      0.1554518791390e-05, 0.5331008042713e-01, 0.2513230340178e+02, 0.2063265737239e-05,
      0.4283680484178e+01, 0.1179062909082e+02, 0.1497613520041e-05, 0.6074207826073e+01,
      0.5486777812467e+01, 0.2000617940427e-05, 0.2501426281450e+01, 0.1778984560711e+02,
      0.1289731195580e-05, 0.3646340599536e+01, 0.7079373888424e+01, 0.1282657998934e-05,
      0.3232864804902e+01, 0.3738761453707e+01,

      0.1528915968658e-05, 0.5581433416669e+01, 0.2132990797783e+00, 0.1187304098432e-05,
      0.5453576453694e+01, 0.9437762937313e+01, 0.7842782928118e-06, 0.2823953922273e+00,
      0.8827390247185e+01, 0.7352892280868e-06, 0.1124369580175e+01, 0.1589072916335e+01,
      0.6570189360797e-06, 0.2089154042840e+01, 0.1176985366291e+02, 0.6324967590410e-06,
      0.6704855581230e+00, 0.6262300422539e+01, 0.6298289872283e-06, 0.2836414855840e+01,
      0.6303851278352e+01, 0.6476686465855e-06, 0.4852433866467e+00, 0.7113454667900e-02,
      0.8587034651234e-06, 0.1453511005668e+01, 0.1672837615881e+03, 0.8068948788113e-06,
      0.9224087798609e+00, 0.6069776770667e+01,

      0.8353786011661e-06, 0.4631707184895e+01, 0.3340612434717e+01, 0.6009324532132e-06,
      0.1829498827726e+01, 0.4136910472696e+01, 0.7558158559566e-06, 0.2588596800317e+01,
      0.6496374930224e+01, 0.5809279504503e-06, 0.5516818853476e+00, 0.1097707878456e+02,
      0.5374131950254e-06, 0.6275674734960e+01, 0.1194447056968e+01, 0.5711160507326e-06,
      0.1091905956872e+01, 0.6282095334605e+01, 0.5710183170746e-06, 0.2415001635090e+01,
      0.6284056366286e+01, 0.5144373590610e-06, 0.6020336443438e+01, 0.6290189305114e+01,
      0.5103108927267e-06, 0.3775634564605e+01, 0.6275962395778e+01, 0.4960654697891e-06,
      0.1073450946756e+01, 0.6127655567643e+01,

      0.4786385689280e-06, 0.2431178012310e+01, 0.6438496133249e+01, 0.6109911263665e-06,
      0.5343356157914e+01, 0.3154687086868e+01, 0.4839898944024e-06, 0.5830833594047e-01,
      0.8018209333619e+00, 0.4734822623919e-06, 0.4536080134821e+01, 0.3128388763578e+01,
      0.4834741473290e-06, 0.2585090489754e+00, 0.7084896783808e+01, 0.5134858581156e-06,
      0.4213317172603e+01, 0.1235285262111e+02, 0.5064004264978e-06, 0.4814418806478e+00,
      0.1185621865188e+02, 0.3753476772761e-06, 0.1599953399788e+01, 0.8429241228195e+01,
      0.4935264014283e-06, 0.2157417556873e+01, 0.2544314396739e+01, 0.3950929600897e-06,
      0.3359394184254e+01, 0.5481254917084e+01,

      0.4895849789777e-06, 0.5165704376558e+01, 0.9225539266174e+01, 0.4215241688886e-06,
      0.2065368800993e+01, 0.1726015463500e+02, 0.3796773731132e-06, 0.1468606346612e+01,
      0.4265981595566e+00, 0.3114178142515e-06, 0.3615638079474e+01, 0.2146165377750e+01,
      0.3260664220838e-06, 0.4417134922435e+01, 0.4164311961999e+01, 0.3976996123008e-06,
      0.4700866883004e+01, 0.5856477690889e+01, 0.2801459672924e-06, 0.4538902060922e+01,
      0.1256967486051e+02, 0.3638931868861e-06, 0.1334197991475e+01, 0.1807370494127e+02,
      0.2487013269476e-06, 0.3749275558275e+01, 0.2629832328990e-01, 0.3034165481994e-06,
      0.4236622030873e+00, 0.4535059491685e+01,

      0.2676278825586e-06, 0.5970848007811e+01, 0.3930209696940e+01, 0.2764903818918e-06,
      0.5194636754501e+01, 0.1256262854127e+02, 0.2485149930507e-06, 0.1002434207846e+01,
      0.5088628793478e+01, 0.2199305540941e-06, 0.3066773098403e+01, 0.1255903824622e+02,
      0.2571106500435e-06, 0.7588312459063e+00, 0.1336797263425e+02, 0.2049751817158e-06,
      0.3444977434856e+01, 0.1137170464392e+02, 0.2599707296297e-06, 0.1873128542205e+01,
      0.7143069561767e+02, 0.1785018072217e-06, 0.5015891306615e+01, 0.1748016358760e+01,
      0.2324833891115e-06, 0.4618271239730e+01, 0.1831953657923e+02, 0.1709711119545e-06,
      0.5300003455669e+01, 0.4933208510675e+01,

      0.2107159351716e-06, 0.2229819815115e+01, 0.7477522907414e+01, 0.1750333080295e-06,
      0.6161485880008e+01, 0.1044738781244e+02, 0.2000598210339e-06, 0.2967357299999e+01,
      0.8031092209206e+01, 0.1380920248681e-06, 0.3027007923917e+01, 0.8635942003952e+01,
      0.1412460470299e-06, 0.6037597163798e+01, 0.2942463415728e+01, 0.1888459803001e-06,
      0.8561476243374e+00, 0.1561374759853e+03, 0.1788370542585e-06, 0.4869736290209e+01,
      0.1592596075957e+01, 0.1360893296167e-06, 0.3626411886436e+01, 0.1309584267300e+02,
      0.1506846530160e-06, 0.1550975377427e+01, 0.1649636139783e+02, 0.1800913376176e-06,
      0.2075826033190e+01, 0.1729818233119e+02,

      0.1436261390649e-06, 0.6148876420255e+01, 0.2042657109477e+02, 0.1220227114151e-06,
      0.4382583879906e+01, 0.7632943190217e+01, 0.1337883603592e-06, 0.2036644327361e+01,
      0.1213955354133e+02, 0.1159326650738e-06, 0.3892276994687e+01, 0.5331357529664e+01,
      0.1352853128569e-06, 0.1447950649744e+01, 0.1673046366289e+02, 0.1433408296083e-06,
      0.4457854692961e+01, 0.7342457794669e+01, 0.1234701666518e-06, 0.1538818147151e+01,
      0.6279485555400e+01, 0.1234027192007e-06, 0.1968523220760e+01, 0.6286666145492e+01,
      0.1244024091797e-06, 0.5779803499985e+01, 0.1511046609763e+02, 0.1097934945516e-06,
      0.6210975221388e+00, 0.1098880815746e+02,

      0.1254611329856e-06, 0.2591963807998e+01, 0.1572083878776e+02, 0.1158247286784e-06,
      0.2483612812670e+01, 0.5729506548653e+01, 0.9039078252960e-07, 0.3857554579796e+01,
      0.9623688285163e+01, 0.9108024978836e-07, 0.5826368512984e+01, 0.7234794171227e+01,
      0.8887068108436e-07, 0.3475694573987e+01, 0.6148010737701e+01, 0.8632374035438e-07,
      0.3059070488983e-01, 0.6418140963190e+01, 0.7893186992967e-07, 0.1583194837728e+01,
      0.2118763888447e+01, 0.8297650201172e-07, 0.8519770534637e+00, 0.1471231707864e+02,
      0.1019759578988e-06, 0.1319598738732e+00, 0.1349867339771e+01, 0.1010037696236e-06,
      0.9937860115618e+00, 0.6836645152238e+01,

      0.1047727548266e-06, 0.1382138405399e+01, 0.5999216516294e+01, 0.7351993881086e-07,
      0.3833397851735e+01, 0.6040347114260e+01, 0.9868771092341e-07, 0.2124913814390e+01,
      0.6566935184597e+01, 0.7007321959390e-07, 0.5946305343763e+01, 0.6525804586632e+01,
      0.6861411679709e-07, 0.4574654977089e+01, 0.7238675589263e+01, 0.7554519809614e-07,
      0.5949232686844e+01, 0.1253985337760e+02, 0.9541880448335e-07, 0.3495242990564e+01,
      0.2122839202813e+02, 0.7185606722155e-07, 0.4310113471661e+01, 0.6245048154254e+01,
      0.7131360871710e-07, 0.5480309323650e+01, 0.6321103546637e+01, 0.6651142021039e-07,
      0.5411097713654e+01, 0.5327476111629e+01,

      0.8538618213667e-07, 0.1827849973951e+01, 0.1101510648075e+02, 0.8634954288044e-07,
      0.5443584943349e+01, 0.5643178611111e+01, 0.7449415051484e-07, 0.2011535459060e+01,
      0.5368044267797e+00, 0.7421047599169e-07, 0.3464562529249e+01, 0.2354323048545e+02,
      0.6140694354424e-07, 0.5657556228815e+01, 0.1296430071988e+02, 0.6353525143033e-07,
      0.3463816593821e+01, 0.1990745094947e+01, 0.6221964013447e-07, 0.1532259498697e+01,
      0.9517183207817e+00, 0.5852480257244e-07, 0.1375396598875e+01, 0.9555997388169e+00,
      0.6398637498911e-07, 0.2405645801972e+01, 0.2407292145756e+02, 0.7039744069878e-07,
      0.5397541799027e+01, 0.5225775174439e+00,

      0.6977997694382e-07, 0.4762347105419e+01, 0.1097355562493e+02, 0.7460629558396e-07,
      0.2711944692164e+01, 0.2200391463820e+02, 0.5376577536101e-07, 0.2352980430239e+01,
      0.1431416805965e+02, 0.7530607893556e-07, 0.1943940180699e+01, 0.1842262939178e+02,
      0.6822928971605e-07, 0.4337651846959e+01, 0.1554202828031e+00, 0.6220772380094e-07,
      0.6716871369278e+00, 0.1845107853235e+02, 0.6586950799043e-07, 0.2229714460505e+01,
      0.5216580451554e+01, 0.5873800565771e-07, 0.7627013920580e+00, 0.6398972393349e+00,
      0.6264346929745e-07, 0.6202785478961e+00, 0.6277552955062e+01, 0.6257929115669e-07,
      0.2886775596668e+01, 0.6288598745829e+01,

      0.5343536033409e-07, 0.1977241012051e+01, 0.4690479774488e+01, 0.5587849781714e-07,
      0.1922923484825e+01, 0.1551045220144e+01, 0.6905100845603e-07, 0.3570757164631e+01,
      0.1030928125552e+00, 0.6178957066649e-07, 0.5197558947765e+01, 0.5230807360890e+01,
      0.6187270224331e-07, 0.8193497368922e+00, 0.5650292065779e+01, 0.5385664291426e-07,
      0.5406336665586e+01, 0.7771377146812e+02, 0.6329363917926e-07, 0.2837760654536e+01,
      0.2608790314060e+02, 0.4546018761604e-07, 0.2933580297050e+01, 0.5535693017924e+00,
      0.6196091049375e-07, 0.4157871494377e+01, 0.8467247584405e+02, 0.6159555108218e-07,
      0.3211703561703e+01, 0.2394243902548e+03,

      0.4995340539317e-07, 0.1459098102922e+01, 0.4732030630302e+01, 0.5457031243572e-07,
      0.1430457676136e+01, 0.6179983037890e+01, 0.4863461418397e-07, 0.2196425916730e+01,
      0.9027992316901e+02, 0.5342947626870e-07, 0.2086612890268e+01, 0.6386168663001e+01,
      0.5674296648439e-07, 0.2760204966535e+01, 0.6915859635113e+01, 0.4745783120161e-07,
      0.4245368971862e+01, 0.6282970628506e+01, 0.4745676961198e-07, 0.5544725787016e+01,
      0.6283181072386e+01, 0.4049796869973e-07, 0.2213984363586e+01, 0.6254626709878e+01,
      0.4248333596940e-07, 0.8075781952896e+00, 0.7875671926403e+01, 0.4027178070205e-07,
      0.1293268540378e+01, 0.6311524991013e+01,

      0.4066543943476e-07, 0.3986141175804e+01, 0.3634620989887e+01, 0.4858863787880e-07,
      0.1276112738231e+01, 0.5760498333002e+01, 0.5277398263530e-07, 0.4916111741527e+01,
      0.2515860172507e+02, 0.4105635656559e-07, 0.1725805864426e+01, 0.6709674010002e+01,
      0.4376781925772e-07, 0.2243642442106e+01, 0.6805653367890e+01, 0.3235827894693e-07,
      0.3614135118271e+01, 0.1066495398892e+01, 0.3073244740308e-07, 0.2460873393460e+01,
      0.5863591145557e+01, 0.3088609271373e-07, 0.5678431771790e+01, 0.9917696840332e+01,
      0.3393022279836e-07, 0.3814017477291e+01, 0.1391601904066e+02, 0.3038686508802e-07,
      0.4660216229171e+01, 0.1256621883632e+02,

      0.4019677752497e-07, 0.5906906243735e+01, 0.1334167431096e+02, 0.3288834998232e-07,
      0.9536146445882e+00, 0.1620077269078e+02, 0.3889973794631e-07, 0.3942205097644e+01,
      0.7478166569050e-01, 0.3050438987141e-07, 0.1624810271286e+01, 0.1805292951336e+02,
      0.3601142564638e-07, 0.4030467142575e+01, 0.6208294184755e+01, 0.3689015557141e-07,
      0.3648878818694e+01, 0.5966683958112e+01, 0.3563471893565e-07, 0.5749584017096e+01,
      0.6357857516136e+01, 0.2776183170667e-07, 0.2630124187070e+01, 0.3523159621801e-02,
      0.2922350530341e-07, 0.1790346403629e+01, 0.1272157198369e+02, 0.3511076917302e-07,
      0.6142198301611e+01, 0.6599467742779e+01,

      0.3619351007632e-07, 0.1432421386492e+01, 0.6019991944201e+01, 0.2561254711098e-07,
      0.2302822475792e+01, 0.1259245002418e+02, 0.2626903942920e-07, 0.8660470994571e+00,
      0.6702560555334e+01, 0.2550187397083e-07, 0.6069721995383e+01, 0.1057540660594e+02,
      0.2535873526138e-07, 0.1079020331795e-01, 0.3141537925223e+02, 0.3519786153847e-07,
      0.3809066902283e+01, 0.2505706758577e+03, 0.3424651492873e-07, 0.2075435114417e+01,
      0.6546159756691e+01, 0.2372676630861e-07, 0.2057803120154e+01, 0.2388894113936e+01,
      0.2710980779541e-07, 0.1510068488010e+01, 0.1202934727411e+02, 0.3038710889704e-07,
      0.5043617528901e+01, 0.1256608456547e+02,

      0.2220364130585e-07, 0.3694793218205e+01, 0.1336244973887e+02, 0.3025880825460e-07,
      0.5450618999049e-01, 0.2908881142201e+02, 0.2784493486864e-07, 0.3381164084502e+01,
      0.1494531617769e+02, 0.2294414142438e-07, 0.4382309025210e+01, 0.6076890225335e+01,
      0.2012723294724e-07, 0.9142212256518e+00, 0.6262720680387e+01, 0.2036357831958e-07,
      0.5676172293154e+01, 0.4701116388778e+01, 0.2003474823288e-07, 0.2592767977625e+01,
      0.6303431020504e+01, 0.2207144900109e-07, 0.5404976271180e+01, 0.6489261475556e+01,
      0.2481664905135e-07, 0.4373284587027e+01, 0.1204357418345e+02, 0.2674949182295e-07,
      0.5859182188482e+01, 0.4590910121555e+01,

      0.2450554720322e-07, 0.4555381557451e+01, 0.1495633313810e+00, 0.2601975986457e-07,
      0.3933165584959e+01, 0.1965104848470e+02, 0.2199860022848e-07, 0.5227977189087e+01,
      0.1351787002167e+02, 0.2448121172316e-07, 0.4858060353949e+01, 0.1162474756779e+01,
      0.1876014864049e-07, 0.5690546553605e+01, 0.6279194432410e+01, 0.1874513219396e-07,
      0.4099539297446e+01, 0.6286957268481e+01, 0.2156380842559e-07, 0.4382594769913e+00,
      0.1813929450232e+02, 0.1981691240061e-07, 0.1829784152444e+01, 0.4686889479442e+01,
      0.2329992648539e-07, 0.2836254278973e+01, 0.1002183730415e+02, 0.1765184135302e-07,
      0.2803494925833e+01, 0.4292330755499e+01,

      0.2436368366085e-07, 0.2836897959677e+01, 0.9514313292143e+02, 0.2164089203889e-07,
      0.6127522446024e+01, 0.6037244212485e+01, 0.1847755034221e-07, 0.3683163635008e+01,
      0.2427287361862e+00, 0.1674798769966e-07, 0.3316993867246e+00, 0.1311972100268e+02,
      0.2222542124356e-07, 0.8294097805480e+00, 0.1266924451345e+02, 0.2071074505925e-07,
      0.3659492220261e+01, 0.6528907488406e+01, 0.1608224471835e-07, 0.4774492067182e+01,
      0.1352175143971e+02, 0.1857583439071e-07, 0.2873120597682e+01, 0.8662240327241e+01,
      0.1793018836159e-07, 0.5282441177929e+00, 0.6819880277225e+01, 0.1575391221692e-07,
      0.1320789654258e+01, 0.1102062672231e+00,

      0.1840132009557e-07, 0.1917110916256e+01, 0.6514761976723e+02, 0.1760917288281e-07,
      0.2972635937132e+01, 0.5746271423666e+01, 0.1561779518516e-07, 0.4372569261981e+01,
      0.6272439236156e+01, 0.1558687885205e-07, 0.5416424926425e+01, 0.6293712464735e+01,
      0.1951359382579e-07, 0.3094448898752e+01, 0.2301353951334e+02, 0.1569144275614e-07,
      0.2802103689808e+01, 0.1765478049437e+02, 0.1479130389462e-07, 0.2136435020467e+01,
      0.2077542790660e-01, 0.1467828510764e-07, 0.7072627435674e+00, 0.1052268489556e+01,
      0.1627627337440e-07, 0.3947607143237e+01, 0.6327837846670e+00, 0.1503498479758e-07,
      0.4079248909190e+01, 0.7626583626240e-01,

      0.1297967708237e-07, 0.6269637122840e+01, 0.1149965630200e+02, 0.1374416896634e-07,
      0.4175657970702e+01, 0.6016468784579e+01, 0.1783812325219e-07, 0.1476540547560e+01,
      0.3301902111895e+02, 0.1525884228756e-07, 0.4653477715241e+01, 0.9411464614024e+01,
      0.1451067396763e-07, 0.2573001128225e+01, 0.1277945078067e+02, 0.1297713111950e-07,
      0.5612799618771e+01, 0.6549682916313e+01, 0.1462784012820e-07, 0.4189661623870e+01,
      0.1863592847156e+02, 0.1384185980007e-07, 0.2656915472196e+01, 0.2379164476796e+01,
      0.1221497599801e-07, 0.5612515760138e+01, 0.1257326515556e+02, 0.1560574525896e-07,
      0.4783414317919e+01, 0.1887552587463e+02,

      0.1544598372036e-07, 0.2694431138063e+01, 0.1820933031200e+02, 0.1531678928696e-07,
      0.4105103489666e+01, 0.2593412433514e+02, 0.1349321503795e-07, 0.3082437194015e+00,
      0.5120601093667e+01, 0.1252030290917e-07, 0.6124072334087e+01, 0.6993008899458e+01,
      0.1459243816687e-07, 0.3733103981697e+01, 0.3813291813120e-01, 0.1226103625262e-07,
      0.1267127706817e+01, 0.2435678079171e+02, 0.1019449641504e-07, 0.4367790112269e+01,
      0.1725663147538e+02, 0.1380789433607e-07, 0.3387201768700e+01, 0.2458316379602e+00,
      0.1019453421658e-07, 0.9204143073737e+00, 0.6112403035119e+01, 0.1297929434405e-07,
      0.5786874896426e+01, 0.1249137003520e+02,

      0.9912677786097e-08, 0.3164232870746e+01, 0.6247047890016e+01, 0.9829386098599e-08,
      0.2586762413351e+01, 0.6453748665772e+01, 0.1226807746104e-07, 0.6239068436607e+01,
      0.5429879531333e+01, 0.1192691755997e-07, 0.1867380051424e+01, 0.6290122169689e+01,
      0.9836499227081e-08, 0.3424716293727e+00, 0.6319103810876e+01, 0.9642862564285e-08,
      0.5661372990657e+01, 0.8273820945392e+01, 0.1165184404862e-07, 0.5768367239093e+01,
      0.1778273215245e+02, 0.1175794418818e-07, 0.1657351222943e+01, 0.6276029531202e+01,
      0.1018948635601e-07, 0.6458292350865e+00, 0.1254537627298e+02, 0.9500383606676e-08,
      0.1054306140741e+01, 0.1256517118505e+02,

      0.1227512202906e-07, 0.2505278379114e+01, 0.2248384854122e+02, 0.9664792009993e-08,
      0.4289737277000e+01, 0.6259197520765e+01, 0.9613285666331e-08, 0.5500597673141e+01,
      0.6306954180126e+01, 0.1117906736211e-07, 0.2361405953468e+01, 0.1779695906178e+02,
      0.9611378640782e-08, 0.2851310576269e+01, 0.2061856251104e+00, 0.8845354852370e-08,
      0.6208777705343e+01, 0.1692165728891e+01, 0.1054046966600e-07, 0.5413091423934e+01,
      0.2204125344462e+00, 0.1215539124483e-07, 0.5613969479755e+01, 0.8257698122054e+02,
      0.9932460955209e-08, 0.1106124877015e+01, 0.1017725758696e+02, 0.8785804715043e-08,
      0.2869224476477e+01, 0.9491756770005e+00,

      0.8538084097562e-08, 0.6159640899344e+01, 0.6393282117669e+01, 0.8648994369529e-08,
      0.1374901198784e+01, 0.4804209201333e+01, 0.1039063219067e-07, 0.5171080641327e+01,
      0.1550861511662e+02, 0.8867983926439e-08, 0.8317320304902e+00, 0.3903911373650e+01,
      0.8327495955244e-08, 0.3605591969180e+01, 0.6172869583223e+01, 0.9243088356133e-08,
      0.6114299196843e+01, 0.6267823317922e+01, 0.9205657357835e-08, 0.3675153683737e+01,
      0.6298328382969e+01, 0.1033269714606e-07, 0.3313328813024e+01, 0.5573142801433e+01,
      0.8001706275552e-08, 0.2019980960053e+01, 0.2648454860559e+01, 0.9171858254191e-08,
      0.8992015524177e+00, 0.1498544001348e+03,

      0.1075327150242e-07, 0.2898669963648e+01, 0.3694923081589e+02, 0.9884866689828e-08,
      0.4946715904478e+01, 0.1140367694411e+02, 0.9541835576677e-08, 0.2371787888469e+01,
      0.1256713221673e+02, 0.7739903376237e-08, 0.2213775190612e+01, 0.7834121070590e+01,
      0.7311962684106e-08, 0.3429378787739e+01, 0.1192625446156e+02, 0.9724904869624e-08,
      0.6195878564404e+01, 0.2280573557157e+02, 0.9251628983612e-08, 0.6511509527390e+00,
      0.2787043132925e+01, 0.7320763787842e-08, 0.6001083639421e+01, 0.6282655592598e+01,
      0.7320296650962e-08, 0.3789073265087e+01, 0.6283496108294e+01, 0.7947032271039e-08,
      0.1059659582204e+01, 0.1241073141809e+02,

      0.9005277053115e-08, 0.1280315624361e+01, 0.6281591679874e+01, 0.8995601652048e-08,
      0.2224439106766e+01, 0.6284560021018e+01, 0.8288040568796e-08, 0.5234914433867e+01,
      0.1241658836951e+02, 0.6359381347255e-08, 0.4137989441490e+01, 0.1596186371003e+01,
      0.8699572228626e-08, 0.1758411009497e+01, 0.6133512519065e+01, 0.6456797542736e-08,
      0.5919285089994e+01, 0.1685848245639e+02, 0.7424573475452e-08, 0.5414616938827e+01,
      0.4061219149443e+01, 0.7235671196168e-08, 0.1496516557134e+01, 0.1610006857377e+03,
      0.8104015182733e-08, 0.1919918242764e+01, 0.8460828644453e+00, 0.8098576535937e-08,
      0.3819615855458e+01, 0.3894181736510e+01,

      0.6275292346625e-08, 0.6244264115141e+01, 0.8531963191132e+00, 0.6052432989112e-08,
      0.5037731872610e+00, 0.1567108171867e+02, 0.5705651535817e-08, 0.2984557271995e+01,
      0.1258692712880e+02, 0.5789650115138e-08, 0.6087038140697e+01, 0.1193336791622e+02,
      0.5512132153377e-08, 0.5855668994076e+01, 0.1232342296471e+02, 0.7388890819102e-08,
      0.2443128574740e+01, 0.4907302013889e+01, 0.5467593991798e-08, 0.3017561234194e+01,
      0.1884211409667e+02, 0.6388519802999e-08, 0.5887386712935e+01, 0.5217580628120e+02,
      0.6106777149944e-08, 0.3483461059895e+00, 0.1422690933580e-01, 0.7383420275489e-08,
      0.5417387056707e+01, 0.2358125818164e+02,

      0.5505208141738e-08, 0.2848193644783e+01, 0.1151388321134e+02, 0.6310757462877e-08,
      0.2349882520828e+01, 0.1041998632314e+02, 0.6166904929691e-08, 0.5728575944077e+00,
      0.6151533897323e+01, 0.5263442042754e-08, 0.4495796125937e+01, 0.1885275071096e+02,
      0.5591828082629e-08, 0.1355441967677e+01, 0.4337116142245e+00, 0.5397051680497e-08,
      0.1673422864307e+01, 0.6286362197481e+01, 0.5396992745159e-08, 0.1833502206373e+01,
      0.6279789503410e+01, 0.6572913000726e-08, 0.3331122065824e+01, 0.1176433076753e+02,
      0.5123421866413e-08, 0.2165327142679e+01, 0.1245594543367e+02, 0.5930495725999e-08,
      0.2931146089284e+01, 0.6414617803568e+01,

      0.6431797403933e-08, 0.4134407994088e+01, 0.1350651127443e+00, 0.5003182207604e-08,
      0.3805420303749e+01, 0.1096996532989e+02, 0.5587731032504e-08, 0.1082469260599e+01,
      0.6062663316000e+01, 0.5935263407816e-08, 0.8384333678401e+00, 0.5326786718777e+01,
      0.4756019827760e-08, 0.3552588749309e+01, 0.3104930017775e+01, 0.6599951172637e-08,
      0.4320826409528e+01, 0.4087944051283e+02, 0.5902606868464e-08, 0.4811879454445e+01,
      0.5849364236221e+01, 0.5921147809031e-08, 0.9942628922396e-01, 0.1581959461667e+01,
      0.5505382581266e-08, 0.2466557607764e+01, 0.6503488384892e+01, 0.5353771071862e-08,
      0.4551978748683e+01, 0.1735668374386e+03,

      0.5063282210946e-08, 0.5710812312425e+01, 0.1248988586463e+02, 0.5926120403383e-08,
      0.1333998428358e+01, 0.2673594526851e+02, 0.5211016176149e-08, 0.4649315360760e+01,
      0.2460261242967e+02, 0.5347075084894e-08, 0.5512754081205e+01, 0.4171425416666e+01,
      0.4872609773574e-08, 0.1308025299938e+01, 0.5333900173445e+01, 0.4727711321420e-08,
      0.2144908368062e+01, 0.7232251527446e+01, 0.6029426018652e-08, 0.5567259412084e+01,
      0.3227113045244e+03, 0.4321485284369e-08, 0.5230667156451e+01, 0.9388005868221e+01,
      0.4476406760553e-08, 0.6134081115303e+01, 0.5547199253223e+01, 0.5835268277420e-08,
      0.4783808492071e+01, 0.7285056171570e+02,

      0.5172183602748e-08, 0.5161817911099e+01, 0.1884570439172e+02, 0.5693571465184e-08,
      0.1381646203111e+01, 0.9723862754494e+02, 0.4060634965349e-08, 0.3876705259495e+00,
      0.4274518229222e+01, 0.3967398770473e-08, 0.5029491776223e+01, 0.3496032717521e+01,
      0.3943754005255e-08, 0.1923162955490e+01, 0.6244942932314e+01, 0.4781323427824e-08,
      0.4633332586423e+01, 0.2929661536378e+02, 0.3871483781204e-08, 0.1616650009743e+01,
      0.6321208768577e+01, 0.5141741733997e-08, 0.9817316704659e-01, 0.1232032006293e+02,
      0.4002385978497e-08, 0.3656161212139e+01, 0.7018952447668e+01, 0.4901092604097e-08,
      0.4404098713092e+01, 0.1478866649112e+01,

      0.3740932630345e-08, 0.5181188732639e+00, 0.6922973089781e+01, 0.4387283718538e-08,
      0.3254859566869e+01, 0.2331413144044e+03, 0.5019197802033e-08, 0.3086773224677e+01,
      0.1715706182245e+02, 0.3834931695175e-08, 0.2797882673542e+01, 0.1491901785440e+02,
      0.3760413942497e-08, 0.2892676280217e+01, 0.1726726808967e+02, 0.3719717204628e-08,
      0.5861046025739e+01, 0.6297302759782e+01, 0.4145623530149e-08, 0.2168239627033e+01,
      0.1376059875786e+02, 0.3932788425380e-08, 0.6271811124181e+01, 0.7872148766781e+01,
      0.3686377476857e-08, 0.3936853151404e+01, 0.6268848941110e+01, 0.3779077950339e-08,
      0.1404148734043e+01, 0.4157198507331e+01,

      0.4091334550598e-08, 0.2452436180854e+01, 0.9779108567966e+01, 0.3926694536146e-08,
      0.6102292739040e+01, 0.1098419223922e+02, 0.4841000253289e-08, 0.6072760457276e+01,
      0.1252801878276e+02, 0.4949340130240e-08, 0.1154832815171e+01, 0.1617106187867e+03,
      0.3761557737360e-08, 0.5527545321897e+01, 0.3185192151914e+01, 0.3647396268188e-08,
      0.1525035688629e+01, 0.6271346477544e+01, 0.3932405074189e-08, 0.5570681040569e+01,
      0.2139354194808e+02, 0.3631322501141e-08, 0.1981240601160e+01, 0.6294805223347e+01,
      0.4130007425139e-08, 0.2050060880201e+01, 0.2195415756911e+02, 0.4433905965176e-08,
      0.3277477970321e+01, 0.7445550607224e+01,

      0.3851814176947e-08, 0.5210690074886e+01, 0.9562891316684e+00, 0.3485807052785e-08,
      0.6653274904611e+00, 0.1161697602389e+02, 0.3979772816991e-08, 0.1767941436148e+01,
      0.2277943724828e+02, 0.3402607460500e-08, 0.3421746306465e+01, 0.1087398597200e+02,
      0.4049993000926e-08, 0.1127144787547e+01, 0.3163918923335e+00, 0.3420511182382e-08,
      0.4214794779161e+01, 0.1362553364512e+02, 0.3640772365012e-08, 0.5324905497687e+01,
      0.1725304118033e+02, 0.3323037987501e-08, 0.6135761838271e+01, 0.6279143387820e+01,
      0.4503141663637e-08, 0.1802305450666e+01, 0.1385561574497e+01, 0.4314560055588e-08,
      0.4812299731574e+01, 0.4176041334900e+01,

      0.3294226949110e-08, 0.3657547059723e+01, 0.6287008313071e+01, 0.3215657197281e-08,
      0.4866676894425e+01, 0.5749861718712e+01, 0.4129362656266e-08, 0.3809342558906e+01,
      0.5905702259363e+01, 0.3137762976388e-08, 0.2494635174443e+01, 0.2099539292909e+02,
      0.3514010952384e-08, 0.2699961831678e+01, 0.7335344340001e+01, 0.3327607571530e-08,
      0.3318457714816e+01, 0.5436992986000e+01, 0.3541066946675e-08, 0.4382703582466e+01,
      0.1234573916645e+02, 0.3216179847052e-08, 0.5271066317054e+01, 0.3802769619140e-01,
      0.2959045059570e-08, 0.5819591585302e+01, 0.2670964694522e+02, 0.3884040326665e-08,
      0.5980934960428e+01, 0.6660449441528e+01,

      0.2922027539886e-08, 0.3337290282483e+01, 0.1375773836557e+01, 0.4110846382042e-08,
      0.5742978187327e+01, 0.4480965020977e+02, 0.2934508411032e-08, 0.2278075804200e+01,
      0.6408777551755e+00, 0.3966896193000e-08, 0.5835747858477e+01, 0.3773735910827e+00,
      0.3286695827610e-08, 0.5838898193902e+01, 0.3932462625300e-02, 0.3720643094196e-08,
      0.1122212337858e+01, 0.1646033343740e+02, 0.3285508906174e-08, 0.9182250996416e+00,
      0.1081813534213e+02, 0.3753880575973e-08, 0.5174761973266e+01, 0.5642198095270e+01,
      0.3022129385587e-08, 0.3381611020639e+01, 0.2982630633589e+02, 0.2798569205621e-08,
      0.3546193723922e+01, 0.1937891852345e+02,

      0.3397872070505e-08, 0.4533203197934e+01, 0.6923953605621e+01, 0.3708099772977e-08,
      0.2756168198616e+01, 0.3066615496545e+02, 0.3599283541510e-08, 0.1934395469918e+01,
      0.6147450479709e+01, 0.3688702753059e-08, 0.7149920971109e+00, 0.2636725487657e+01,
      0.2681084724003e-08, 0.4899819493154e+01, 0.6816289982179e+01, 0.3495993460759e-08,
      0.1572418915115e+01, 0.6418701221183e+01, 0.3130770324995e-08, 0.8912190180489e+00,
      0.1235996607578e+02, 0.2744353821941e-08, 0.3800821940055e+01, 0.2059724391010e+02,
      0.2842732906341e-08, 0.2644717440029e+01, 0.2828699048865e+02, 0.3046882682154e-08,
      0.3987793020179e+01, 0.6055599646783e+01,

      0.2399072455143e-08, 0.9908826440764e+00, 0.6255674361143e+01, 0.2384306274204e-08,
      0.2516149752220e+01, 0.6310477339748e+01, 0.2977324500559e-08, 0.5849195642118e+01,
      0.1652265972112e+02, 0.3062835258972e-08, 0.1681660100162e+01, 0.1172006883645e+02,
      0.3109682589231e-08, 0.5804143987737e+00, 0.2751146787858e+02, 0.2903920355299e-08,
      0.5800768280123e+01, 0.6510552054109e+01, 0.2823221989212e-08, 0.9241118370216e+00,
      0.5469525544182e+01, 0.3187949696649e-08, 0.3139776445735e+01, 0.1693792562116e+03,
      0.2922559771655e-08, 0.3549440782984e+01, 0.2630839062450e+00, 0.2436302066603e-08,
      0.4735540696319e+01, 0.3946258593675e+00,

      0.3049473043606e-08, 0.4998289124561e+01, 0.8390110365991e+01, 0.2863682575784e-08,
      0.6709515671102e+00, 0.2243449970715e+00, 0.2641750517966e-08, 0.5410978257284e+01,
      0.2986433403208e+02, 0.2704093466243e-08, 0.4778317207821e+01, 0.6129297044991e+01,
      0.2445522177011e-08, 0.6009020662222e+01, 0.1171295538178e+02, 0.2623608810230e-08,
      0.5010449777147e+01, 0.6436854655901e+01, 0.2079259704053e-08, 0.5980943768809e+01,
      0.2019909489111e+02, 0.2820225596771e-08, 0.2679965110468e+01, 0.5934151399930e+01,
      0.2365221950927e-08, 0.1894231148810e+01, 0.2470570524223e+02, 0.2359682077149e-08,
      0.4220752950780e+01, 0.8671969964381e+01,

      0.2387577137206e-08, 0.2571783940617e+01, 0.7096626156709e+01, 0.1982102089816e-08,
      0.5169765997119e+00, 0.1727188400790e+02, 0.2687502389925e-08, 0.6239078264579e+01,
      0.7075506709219e+02, 0.2207751669135e-08, 0.2031184412677e+01, 0.4377611041777e+01,
      0.2618370214274e-08, 0.8266079985979e+00, 0.6632000300961e+01, 0.2591951887361e-08,
      0.8819350522008e+00, 0.4873985990671e+02, 0.2375055656248e-08, 0.3520944177789e+01,
      0.1590676413561e+02, 0.2472019978911e-08, 0.1551431908671e+01, 0.6612329252343e+00,
      0.2368157127199e-08, 0.4178610147412e+01, 0.3459636466239e+02, 0.1764846605693e-08,
      0.1506764000157e+01, 0.1980094587212e+02,

      0.2291769608798e-08, 0.2118250611782e+01, 0.2844914056730e-01, 0.2209997316943e-08,
      0.3363255261678e+01, 0.2666070658668e+00, 0.2292699097923e-08, 0.4200423956460e+00,
      0.1484170571900e-02, 0.1629683015329e-08, 0.2331362582487e+01, 0.3035599730800e+02,
      0.2206492862426e-08, 0.3400274026992e+01, 0.6281667977667e+01, 0.2205746568257e-08,
      0.1066051230724e+00, 0.6284483723224e+01, 0.2026310767991e-08, 0.2779066487979e+01,
      0.2449240616245e+02, 0.1762977622163e-08, 0.9951450691840e+00, 0.2045286941806e+02,
      0.1368535049606e-08, 0.6402447365817e+00, 0.2473415438279e+02, 0.1720598775450e-08,
      0.2303524214705e+00, 0.1679593901136e+03,

      0.1702429015449e-08, 0.6164622655048e+01, 0.3338575901272e+03, 0.1414033197685e-08,
      0.3954561185580e+01, 0.1624205518357e+03, 0.1573768958043e-08, 0.2028286308984e+01,
      0.3144167757552e+02, 0.1650705184447e-08, 0.2304040666128e+01, 0.5267006960365e+02,
      0.1651087618855e-08, 0.2538461057280e+01, 0.8956999012000e+02, 0.1616409518983e-08,
      0.5111054348152e+01, 0.3332657872986e+02, 0.1537175173581e-08, 0.5601130666603e+01,
      0.3852657435933e+02, 0.1593191980553e-08, 0.2614340453411e+01, 0.2282781046519e+03,
      0.1499480170643e-08, 0.3624721577264e+01, 0.2823723341956e+02, 0.1493807843235e-08,
      0.4214569879008e+01, 0.2876692439167e+02,

      0.1074571199328e-08, 0.1496911744704e+00, 0.8397383534231e+02, 0.1074406983417e-08,
      0.1187817671922e+01, 0.8401985929482e+02, 0.9757576855851e-09, 0.2655703035858e+01,
      0.7826370942180e+02, 0.1258432887565e-08, 0.4969896184844e+01, 0.3115650189215e+03,
      0.1240336343282e-08, 0.5192460776926e+01, 0.1784300471910e+03, 0.9016107005164e-09,
      0.1960356923057e+01, 0.5886454391678e+02, 0.1135392360918e-08, 0.5082427809068e+01,
      0.7842370451713e+02, 0.9216046089565e-09, 0.2793775037273e+01, 0.1014262087719e+03,
      0.1061276615030e-08, 0.3726144311409e+01, 0.5660027930059e+02, 0.1010110596263e-08,
      0.7404080708937e+00, 0.4245678405627e+02,

      0.7217424756199e-09, 0.2697449980577e-01, 0.2457074661053e+03, 0.6912003846756e-09,
      0.4253296276335e+01, 0.1679936946371e+03, 0.6871814664847e-09, 0.5148072412354e+01,
      0.6053048899753e+02, 0.4887158016343e-09, 0.2153581148294e+01, 0.9656299901946e+02,
      0.5161802866314e-09, 0.3852750634351e+01, 0.2442876000072e+03, 0.5652599559057e-09,
      0.1233233356270e+01, 0.8365903305582e+02, 0.4710812608586e-09, 0.5610486976767e+01,
      0.3164282286739e+03, 0.4909977500324e-09, 0.1639629524123e+01, 0.4059982187939e+03,
      0.4772641839378e-09, 0.3737100368583e+01, 0.1805255418145e+03, 0.4487562567153e-09,
      0.1158417054478e+00, 0.8433466158131e+02,

      0.3943441230497e-09, 0.6243502862796e+00, 0.2568537517081e+03, 0.3952236913598e-09,
      0.3510377382385e+01, 0.2449975330562e+03, 0.3788898363417e-09, 0.5916128302299e+01,
      0.1568131045107e+03, 0.3738329328831e-09, 0.1042266763456e+01, 0.3948519331910e+03,
      0.2451199165151e-09, 0.1166788435700e+01, 0.1435713242844e+03, 0.2436734402904e-09,
      0.3254726114901e+01, 0.2268582385539e+03, 0.2213605274325e-09, 0.1687210598530e+01,
      0.1658638954901e+03, 0.1491521204829e-09, 0.2657541786794e+01, 0.2219950288015e+03,
      0.1474995329744e-09, 0.5013089805819e+01, 0.3052819430710e+03, 0.1661939475656e-09,
      0.5495315428418e+01, 0.2526661704812e+03,

      0.9015946748003e-10, 0.2236989966505e+01, 0.4171445043968e+03};

  /* Sun-to-Earth, T^0, Z */
  static const double e0z[] = {
      0.2796207639075e-05, 0.3198701560209e+01, 0.8433466158131e+02,  0.1016042198142e-05,
      0.5422360395913e+01, 0.5507553240374e+01, 0.8044305033647e-06,  0.3880222866652e+01,
      0.5223693906222e+01, 0.4385347909274e-06, 0.3704369937468e+01,  0.2352866153506e+01,
      0.3186156414906e-06, 0.3999639363235e+01, 0.1577343543434e+01,  0.2272412285792e-06,
      0.3984738315952e+01, 0.1047747311755e+01, 0.1645620103007e-06,  0.3565412516841e+01,
      0.5856477690889e+01, 0.1815836921166e-06, 0.4984507059020e+01,  0.6283075850446e+01,
      0.1447461676364e-06, 0.3702753570108e+01, 0.9437762937313e+01,  0.1430760876382e-06,
      0.3409658712357e+01, 0.1021328554739e+02,

      0.1120445753226e-06, 0.4829561570246e+01, 0.1414349524433e+02,  0.1090232840797e-06,
      0.2080729178066e+01, 0.6812766822558e+01, 0.9715727346551e-07,  0.3476295881948e+01,
      0.4694002934110e+01, 0.1036267136217e-06, 0.4056639536648e+01,  0.7109288135493e+02,
      0.8752665271340e-07, 0.4448159519911e+01, 0.5753384878334e+01,  0.8331864956004e-07,
      0.4991704044208e+01, 0.7084896783808e+01, 0.6901658670245e-07,  0.4325358994219e+01,
      0.6275962395778e+01, 0.9144536848998e-07, 0.1141826375363e+01,  0.6620890113188e+01,
      0.7205085037435e-07, 0.3624344170143e+01, 0.5296909721118e+00,  0.7697874654176e-07,
      0.5554257458998e+01, 0.1676215758509e+03,

      0.5197545738384e-07, 0.6251760961735e+01, 0.1807370494127e+02,  0.5031345378608e-07,
      0.2497341091913e+01, 0.4705732307012e+01, 0.4527110205840e-07,  0.2335079920992e+01,
      0.6309374173736e+01, 0.4753355798089e-07, 0.7094148987474e+00,  0.5884926831456e+01,
      0.4296951977516e-07, 0.1101916352091e+01, 0.6681224869435e+01,  0.3855341568387e-07,
      0.1825495405486e+01, 0.5486777812467e+01, 0.5253930970990e-07,  0.4424740687208e+01,
      0.7860419393880e+01, 0.4024630496471e-07, 0.5120498157053e+01,  0.1336797263425e+02,
      0.4061069791453e-07, 0.6029771435451e+01, 0.3930209696940e+01,  0.3797883804205e-07,
      0.4435193600836e+00, 0.3154687086868e+01,

      0.2933033225587e-07, 0.5124157356507e+01, 0.1059381944224e+01,  0.3503000930426e-07,
      0.5421830162065e+01, 0.6069776770667e+01, 0.3670096214050e-07,  0.4582101667297e+01,
      0.1219403291462e+02, 0.2905609437008e-07, 0.1926566420072e+01,  0.1097707878456e+02,
      0.2466827821713e-07, 0.6090174539834e+00, 0.6496374930224e+01,  0.2691647295332e-07,
      0.1393432595077e+01, 0.2200391463820e+02, 0.2150554667946e-07,  0.4308671715951e+01,
      0.5643178611111e+01, 0.2237481922680e-07, 0.8133968269414e+00,  0.8635942003952e+01,
      0.1817741038157e-07, 0.3755205127454e+01, 0.3340612434717e+01,  0.2227820762132e-07,
      0.2759558596664e+01, 0.1203646072878e+02,

      0.1944713772307e-07, 0.5699645869121e+01, 0.1179062909082e+02,  0.1527340520662e-07,
      0.1986749091746e+01, 0.3981490189893e+00, 0.1577282574914e-07,  0.3205017217983e+01,
      0.5088628793478e+01, 0.1424738825424e-07, 0.6256747903666e+01,  0.2544314396739e+01,
      0.1616563121701e-07, 0.2601671259394e+00, 0.1729818233119e+02,  0.1401210391692e-07,
      0.4686939173506e+01, 0.7058598460518e+01, 0.1488726974214e-07,  0.2815862451372e+01,
      0.2593412433514e+02, 0.1692626442388e-07, 0.4956894109797e+01,  0.1564752902480e+03,
      0.1123571582910e-07, 0.2381192697696e+01, 0.3738761453707e+01,  0.9903308606317e-08,
      0.4294851657684e+01, 0.9225539266174e+01,

      0.9174533187191e-08, 0.3075171510642e+01, 0.4164311961999e+01,  0.8645985631457e-08,
      0.5477534821633e+00, 0.8429241228195e+01, -0.1085876492688e-07, 0.0000000000000e+00,
      0.0000000000000e+00, 0.9264309077815e-08, 0.5968571670097e+01,  0.7079373888424e+01,
      0.8243116984954e-08, 0.1489098777643e+01, 0.1044738781244e+02,  0.8268102113708e-08,
      0.3512977691983e+01, 0.1150676975667e+02, 0.9043613988227e-08,  0.1290704408221e+00,
      0.1101510648075e+02, 0.7432912038789e-08, 0.1991086893337e+01,  0.2608790314060e+02,
      0.8586233727285e-08, 0.4238357924414e+01, 0.2986433403208e+02,  0.7612230060131e-08,
      0.2911090150166e+01, 0.4732030630302e+01,

      0.7097787751408e-08, 0.1908938392390e+01, 0.8031092209206e+01,  0.7640237040175e-08,
      0.6129219000168e+00, 0.7962980379786e+00, 0.7070445688081e-08,  0.1380417036651e+01,
      0.2146165377750e+01, 0.7690770957702e-08, 0.1680504249084e+01,  0.2122839202813e+02,
      0.8051292542594e-08, 0.5127423484511e+01, 0.2942463415728e+01,  0.5902709104515e-08,
      0.2020274190917e+01, 0.7755226100720e+00, 0.5134567496462e-08,  0.2606778676418e+01,
      0.1256615170089e+02, 0.5525802046102e-08, 0.1613011769663e+01,  0.8018209333619e+00,
      0.5880724784221e-08, 0.4604483417236e+01, 0.4690479774488e+01,  0.5211699081370e-08,
      0.5718964114193e+01, 0.8827390247185e+01,

      0.4891849573562e-08, 0.3689658932196e+01, 0.2132990797783e+00,  0.5150246069997e-08,
      0.4099769855122e+01, 0.6480980550449e+02, 0.5102434319633e-08,  0.5660834602509e+01,
      0.3379454372902e+02, 0.5083405254252e-08, 0.9842221218974e+00,  0.4136910472696e+01,
      0.4206562585682e-08, 0.1341363634163e+00, 0.3128388763578e+01,  0.4663249683579e-08,
      0.8130132735866e+00, 0.5216580451554e+01, 0.4099474416530e-08,  0.5791497770644e+01,
      0.4265981595566e+00, 0.4628251220767e-08, 0.1249802769331e+01,  0.1572083878776e+02,
      0.5024068728142e-08, 0.4795684802743e+01, 0.6290189305114e+01,  0.5120234327758e-08,
      0.3810420387208e+01, 0.5230807360890e+01,

      0.5524029815280e-08, 0.1029264714351e+01, 0.2397622045175e+03,  0.4757415718860e-08,
      0.3528044781779e+01, 0.1649636139783e+02, 0.3915786131127e-08,  0.5593889282646e+01,
      0.1589072916335e+01, 0.4869053149991e-08, 0.3299636454433e+01,  0.7632943190217e+01,
      0.3649365703729e-08, 0.1286049002584e+01, 0.6206810014183e+01,  0.3992493949002e-08,
      0.3100307589464e+01, 0.2515860172507e+02, 0.3320247477418e-08,  0.6212683940807e+01,
      0.1216800268190e+02, 0.3287123739696e-08, 0.4699118445928e+01,  0.7234794171227e+01,
      0.3472776811103e-08, 0.2630507142004e+01, 0.7342457794669e+01,  0.3423253294767e-08,
      0.2946432844305e+01, 0.9623688285163e+01,

      0.3896173898244e-08, 0.1224834179264e+01, 0.6438496133249e+01,  0.3388455337924e-08,
      0.1543807616351e+01, 0.1494531617769e+02, 0.3062704716523e-08,  0.1191777572310e+01,
      0.8662240327241e+01, 0.3270075600400e-08, 0.5483498767737e+01,  0.1194447056968e+01,
      0.3101209215259e-08, 0.8000833804348e+00, 0.3772475342596e+02,  0.2780883347311e-08,
      0.4077980721888e+00, 0.5863591145557e+01, 0.2903605931824e-08,  0.2617490302147e+01,
      0.1965104848470e+02, 0.2682014743119e-08, 0.2634703158290e+01,  0.7238675589263e+01,
      0.2534360108492e-08, 0.6102446114873e+01, 0.6836645152238e+01,  0.2392564882509e-08,
      0.3681820208691e+01, 0.5849364236221e+01,

      0.2656667254856e-08, 0.6216045388886e+01, 0.6133512519065e+01,  0.2331242096773e-08,
      0.5864949777744e+01, 0.4535059491685e+01, 0.2287898363668e-08,  0.4566628532802e+01,
      0.7477522907414e+01, 0.2336944521306e-08, 0.2442722126930e+01,  0.1137170464392e+02,
      0.3156632236269e-08, 0.1626628050682e+01, 0.2509084901204e+03,  0.2982612402766e-08,
      0.2803604512609e+01, 0.1748016358760e+01, 0.2774031674807e-08,  0.4654002897158e+01,
      0.8223916695780e+02, 0.2295236548638e-08, 0.4326518333253e+01,  0.3378142627421e+00,
      0.2190714699873e-08, 0.4519614578328e+01, 0.2908881142201e+02,  0.2191495845045e-08,
      0.3012626912549e+01, 0.1673046366289e+02,

      0.2492901628386e-08, 0.1290101424052e+00, 0.1543797956245e+03,  0.1993778064319e-08,
      0.3864046799414e+01, 0.1778984560711e+02, 0.1898146479022e-08,  0.5053777235891e+01,
      0.2042657109477e+02, 0.1918280127634e-08, 0.2222470192548e+01,  0.4165496312290e+02,
      0.1916351061607e-08, 0.8719067257774e+00, 0.7737595720538e+02,  0.1834720181466e-08,
      0.4031491098040e+01, 0.2358125818164e+02, 0.1249201523806e-08,  0.5938379466835e+01,
      0.3301902111895e+02, 0.1477304050539e-08, 0.6544722606797e+00,  0.9548094718417e+02,
      0.1264316431249e-08, 0.2059072853236e+01, 0.8399684731857e+02,  0.1203526495039e-08,
      0.3644813532605e+01, 0.4558517281984e+02,

      0.9221681059831e-09, 0.3241815055602e+01, 0.7805158573086e+02,  0.7849278367646e-09,
      0.5043812342457e+01, 0.5217580628120e+02, 0.7983392077387e-09,  0.5000024502753e+01,
      0.1501922143975e+03, 0.7925395431654e-09, 0.1398734871821e-01,  0.9061773743175e+02,
      0.7640473285886e-09, 0.5067111723130e+01, 0.4951538251678e+02,  0.5398937754482e-09,
      0.5597382200075e+01, 0.1613385000004e+03, 0.5626247550193e-09,  0.2601338209422e+01,
      0.7318837597844e+02, 0.5525197197855e-09, 0.5814832109256e+01,  0.1432335100216e+03,
      0.5407629837898e-09, 0.3384820609076e+01, 0.3230491187871e+03,  0.3856739119801e-09,
      0.1072391840473e+01, 0.2334791286671e+03,

      0.3856425239987e-09, 0.2369540393327e+01, 0.1739046517013e+03,  0.4350867755983e-09,
      0.5255575751082e+01, 0.1620484330494e+03, 0.3844113924996e-09,  0.5482356246182e+01,
      0.9757644180768e+02, 0.2854869155431e-09, 0.9573634763143e+00,  0.1697170704744e+03,
      0.1719227671416e-09, 0.1887203025202e+01, 0.2265204242912e+03,  0.1527846879755e-09,
      0.3982183931157e+01, 0.3341954043900e+03, 0.1128229264847e-09,  0.2787457156298e+01,
      0.3119028331842e+03};

  /* Sun-to-Earth, T^1, X */
  static const double e1x[] = {
      0.1234046326004e-05, 0.0000000000000e+00, 0.0000000000000e+00, 0.5150068824701e-06,
      0.6002664557501e+01, 0.1256615170089e+02, 0.1290743923245e-07, 0.5959437664199e+01,
      0.1884922755134e+02, 0.1068615564952e-07, 0.2015529654209e+01, 0.6283075850446e+01,
      0.2079619142538e-08, 0.1732960531432e+01, 0.6279552690824e+01, 0.2078009243969e-08,
      0.4915604476996e+01, 0.6286599010068e+01, 0.6206330058856e-09, 0.3616457953824e+00,
      0.4705732307012e+01, 0.5989335313746e-09, 0.3802607304474e+01, 0.6256777527156e+01,
      0.5958495663840e-09, 0.2845866560031e+01, 0.6309374173736e+01, 0.4866923261539e-09,
      0.5213203771824e+01, 0.7755226100720e+00,

      0.4267785823142e-09, 0.4368189727818e+00, 0.1059381944224e+01, 0.4610675141648e-09,
      0.1837249181372e-01, 0.7860419393880e+01, 0.3626989993973e-09, 0.2161590545326e+01,
      0.5753384878334e+01, 0.3563071194389e-09, 0.1452631954746e+01, 0.5884926831456e+01,
      0.3557015642807e-09, 0.4470593393054e+01, 0.6812766822558e+01, 0.3210412089122e-09,
      0.5195926078314e+01, 0.6681224869435e+01, 0.2875473577986e-09, 0.5916256610193e+01,
      0.2513230340178e+02, 0.2842913681629e-09, 0.1149902426047e+01, 0.6127655567643e+01,
      0.2751248215916e-09, 0.5502088574662e+01, 0.6438496133249e+01, 0.2481432881127e-09,
      0.2921989846637e+01, 0.5486777812467e+01,

      0.2059885976560e-09, 0.3718070376585e+01, 0.7079373888424e+01, 0.2015522342591e-09,
      0.5979395259740e+01, 0.6290189305114e+01, 0.1995364084253e-09, 0.6772087985494e+00,
      0.6275962395778e+01, 0.1957436436943e-09, 0.2899210654665e+01, 0.5507553240374e+01,
      0.1651609818948e-09, 0.6228206482192e+01, 0.1150676975667e+02, 0.1822980550699e-09,
      0.1469348746179e+01, 0.1179062909082e+02, 0.1675223159760e-09, 0.3813910555688e+01,
      0.7058598460518e+01, 0.1706491764745e-09, 0.3004380506684e+00, 0.7113454667900e-02,
      0.1392952362615e-09, 0.1440393973406e+01, 0.7962980379786e+00, 0.1209868266342e-09,
      0.4150425791727e+01, 0.4694002934110e+01,

      0.1009827202611e-09, 0.3290040429843e+01, 0.3738761453707e+01, 0.1047261388602e-09,
      0.4229590090227e+01, 0.6282095334605e+01, 0.1047006652004e-09, 0.2418967680575e+01,
      0.6284056366286e+01, 0.9609993143095e-10, 0.4627943659201e+01, 0.6069776770667e+01,
      0.9590900593873e-10, 0.1894393939924e+01, 0.4136910472696e+01, 0.9146249188071e-10,
      0.2010647519562e+01, 0.6496374930224e+01, 0.8545274480290e-10, 0.5529846956226e-01,
      0.1194447056968e+01, 0.8224377881194e-10, 0.1254304102174e+01, 0.1589072916335e+01,
      0.6183529510410e-10, 0.3360862168815e+01, 0.8827390247185e+01, 0.6259255147141e-10,
      0.4755628243179e+01, 0.8429241228195e+01,

      0.5539291694151e-10, 0.5371746955142e+01, 0.4933208510675e+01, 0.7328259466314e-10,
      0.4927699613906e+00, 0.4535059491685e+01, 0.6017835843560e-10, 0.5776682001734e-01,
      0.1255903824622e+02, 0.7079827775243e-10, 0.4395059432251e+01, 0.5088628793478e+01,
      0.5170358878213e-10, 0.5154062619954e+01, 0.1176985366291e+02, 0.4872301838682e-10,
      0.6289611648973e+00, 0.6040347114260e+01, 0.5249869411058e-10, 0.5617272046949e+01,
      0.3154687086868e+01, 0.4716172354411e-10, 0.3965901800877e+01, 0.5331357529664e+01,
      0.4871214940964e-10, 0.4627507050093e+01, 0.1256967486051e+02, 0.4598076850751e-10,
      0.6023631226459e+01, 0.6525804586632e+01,

      0.4562196089485e-10, 0.4138562084068e+01, 0.3930209696940e+01, 0.4325493872224e-10,
      0.1330845906564e+01, 0.7632943190217e+01, 0.5673781176748e-10, 0.2558752615657e+01,
      0.5729506548653e+01, 0.3961436642503e-10, 0.2728071734630e+01, 0.7234794171227e+01,
      0.5101868209058e-10, 0.4113444965144e+01, 0.6836645152238e+01, 0.5257043167676e-10,
      0.6195089830590e+01, 0.8031092209206e+01, 0.5076613989393e-10, 0.2305124132918e+01,
      0.7477522907414e+01, 0.3342169352778e-10, 0.5415998155071e+01, 0.1097707878456e+02,
      0.3545881983591e-10, 0.3727160564574e+01, 0.4164311961999e+01, 0.3364063738599e-10,
      0.2901121049204e+00, 0.1137170464392e+02,

      0.3357039670776e-10, 0.1652229354331e+01, 0.5223693906222e+01, 0.4307412268687e-10,
      0.4938909587445e+01, 0.1592596075957e+01, 0.3405769115435e-10, 0.2408890766511e+01,
      0.3128388763578e+01, 0.3001926198480e-10, 0.4862239006386e+01, 0.1748016358760e+01,
      0.2778264787325e-10, 0.5241168661353e+01, 0.7342457794669e+01, 0.2676159480666e-10,
      0.3423593942199e+01, 0.2146165377750e+01, 0.2954273399939e-10, 0.1881721265406e+01,
      0.5368044267797e+00, 0.3309362888795e-10, 0.1931525677349e+01, 0.8018209333619e+00,
      0.2810283608438e-10, 0.2414659495050e+01, 0.5225775174439e+00, 0.3378045637764e-10,
      0.4238019163430e+01, 0.1554202828031e+00,

      0.2558134979840e-10, 0.1828225235805e+01, 0.5230807360890e+01, 0.2273755578447e-10,
      0.5858184283998e+01, 0.7084896783808e+01, 0.2294176037690e-10, 0.4514589779057e+01,
      0.1726015463500e+02, 0.2533506099435e-10, 0.2355717851551e+01, 0.5216580451554e+01,
      0.2716685375812e-10, 0.2221003625100e+01, 0.8635942003952e+01, 0.2419043435198e-10,
      0.5955704951635e+01, 0.4690479774488e+01, 0.2521232544812e-10, 0.1395676848521e+01,
      0.5481254917084e+01, 0.2630195021491e-10, 0.5727468918743e+01, 0.2629832328990e-01,
      0.2548395840944e-10, 0.2628351859400e-03, 0.1349867339771e+01};

  /* Sun-to-Earth, T^1, Y */
  static const double e1y[] = {
      0.9304690546528e-06, 0.0000000000000e+00, 0.0000000000000e+00, 0.5150715570663e-06,
      0.4431807116294e+01, 0.1256615170089e+02, 0.1290825411056e-07, 0.4388610039678e+01,
      0.1884922755134e+02, 0.4645466665386e-08, 0.5827263376034e+01, 0.6283075850446e+01,
      0.2079625310718e-08, 0.1621698662282e+00, 0.6279552690824e+01, 0.2078189850907e-08,
      0.3344713435140e+01, 0.6286599010068e+01, 0.6207190138027e-09, 0.5074049319576e+01,
      0.4705732307012e+01, 0.5989826532569e-09, 0.2231842216620e+01, 0.6256777527156e+01,
      0.5961360812618e-09, 0.1274975769045e+01, 0.6309374173736e+01, 0.4874165471016e-09,
      0.3642277426779e+01, 0.7755226100720e+00,

      0.4283834034360e-09, 0.5148765510106e+01, 0.1059381944224e+01, 0.4652389287529e-09,
      0.4715794792175e+01, 0.7860419393880e+01, 0.3751707476401e-09, 0.6617207370325e+00,
      0.5753384878334e+01, 0.3559998806198e-09, 0.6155548875404e+01, 0.5884926831456e+01,
      0.3558447558857e-09, 0.2898827297664e+01, 0.6812766822558e+01, 0.3211116927106e-09,
      0.3625813502509e+01, 0.6681224869435e+01, 0.2875609914672e-09, 0.4345435813134e+01,
      0.2513230340178e+02, 0.2843109704069e-09, 0.5862263940038e+01, 0.6127655567643e+01,
      0.2744676468427e-09, 0.3926419475089e+01, 0.6438496133249e+01, 0.2481285237789e-09,
      0.1351976572828e+01, 0.5486777812467e+01,

      0.2060338481033e-09, 0.2147556998591e+01, 0.7079373888424e+01, 0.2015822358331e-09,
      0.4408358972216e+01, 0.6290189305114e+01, 0.2001195944195e-09, 0.5385829822531e+01,
      0.6275962395778e+01, 0.1953667642377e-09, 0.1304933746120e+01, 0.5507553240374e+01,
      0.1839744078713e-09, 0.6173567228835e+01, 0.1179062909082e+02, 0.1643334294845e-09,
      0.4635942997523e+01, 0.1150676975667e+02, 0.1768051018652e-09, 0.5086283558874e+01,
      0.7113454667900e-02, 0.1674874205489e-09, 0.2243332137241e+01, 0.7058598460518e+01,
      0.1421445397609e-09, 0.6186899771515e+01, 0.7962980379786e+00, 0.1255163958267e-09,
      0.5730238465658e+01, 0.4694002934110e+01,

      0.1013945281961e-09, 0.1726055228402e+01, 0.3738761453707e+01, 0.1047294335852e-09,
      0.2658801228129e+01, 0.6282095334605e+01, 0.1047103879392e-09, 0.8481047835035e+00,
      0.6284056366286e+01, 0.9530343962826e-10, 0.3079267149859e+01, 0.6069776770667e+01,
      0.9604637611690e-10, 0.3258679792918e+00, 0.4136910472696e+01, 0.9153518537177e-10,
      0.4398599886584e+00, 0.6496374930224e+01, 0.8562458214922e-10, 0.4772686794145e+01,
      0.1194447056968e+01, 0.8232525360654e-10, 0.5966220721679e+01, 0.1589072916335e+01,
      0.6150223411438e-10, 0.1780985591923e+01, 0.8827390247185e+01, 0.6272087858000e-10,
      0.3184305429012e+01, 0.8429241228195e+01,

      0.5540476311040e-10, 0.3801260595433e+01, 0.4933208510675e+01, 0.7331901699361e-10,
      0.5205948591865e+01, 0.4535059491685e+01, 0.6018528702791e-10, 0.4770139083623e+01,
      0.1255903824622e+02, 0.5150530724804e-10, 0.3574796899585e+01, 0.1176985366291e+02,
      0.6471933741811e-10, 0.2679787266521e+01, 0.5088628793478e+01, 0.5317460644174e-10,
      0.9528763345494e+00, 0.3154687086868e+01, 0.4832187748783e-10, 0.5329322498232e+01,
      0.6040347114260e+01, 0.4716763555110e-10, 0.2395235316466e+01, 0.5331357529664e+01,
      0.4871509139861e-10, 0.3056663648823e+01, 0.1256967486051e+02, 0.4598417696768e-10,
      0.4452762609019e+01, 0.6525804586632e+01,

      0.5674189533175e-10, 0.9879680872193e+00, 0.5729506548653e+01, 0.4073560328195e-10,
      0.5939127696986e+01, 0.7632943190217e+01, 0.5040994945359e-10, 0.4549875824510e+01,
      0.8031092209206e+01, 0.5078185134679e-10, 0.7346659893982e+00, 0.7477522907414e+01,
      0.3769343537061e-10, 0.1071317188367e+01, 0.7234794171227e+01, 0.4980331365299e-10,
      0.2500345341784e+01, 0.6836645152238e+01, 0.3458236594757e-10, 0.3825159450711e+01,
      0.1097707878456e+02, 0.3578859493602e-10, 0.5299664791549e+01, 0.4164311961999e+01,
      0.3370504646419e-10, 0.5002316301593e+01, 0.1137170464392e+02, 0.3299873338428e-10,
      0.2526123275282e+01, 0.3930209696940e+01,

      0.4304917318409e-10, 0.3368078557132e+01, 0.1592596075957e+01, 0.3402418753455e-10,
      0.8385495425800e+00, 0.3128388763578e+01, 0.2778460572146e-10, 0.3669905203240e+01,
      0.7342457794669e+01, 0.2782710128902e-10, 0.2691664812170e+00, 0.1748016358760e+01,
      0.2711725179646e-10, 0.4707487217718e+01, 0.5296909721118e+00, 0.2981760946340e-10,
      0.3190260867816e+00, 0.5368044267797e+00, 0.2811672977772e-10, 0.3196532315372e+01,
      0.7084896783808e+01, 0.2863454474467e-10, 0.2263240324780e+00, 0.5223693906222e+01,
      0.3333464634051e-10, 0.3498451685065e+01, 0.8018209333619e+00, 0.3312991747609e-10,
      0.5839154477412e+01, 0.1554202828031e+00,

      0.2813255564006e-10, 0.8268044346621e+00, 0.5225775174439e+00, 0.2665098083966e-10,
      0.3934021725360e+01, 0.5216580451554e+01, 0.2349795705216e-10, 0.5197620913779e+01,
      0.2146165377750e+01, 0.2330352293961e-10, 0.2984999231807e+01, 0.1726015463500e+02,
      0.2728001683419e-10, 0.6521679638544e+00, 0.8635942003952e+01, 0.2484061007669e-10,
      0.3468955561097e+01, 0.5230807360890e+01, 0.2646328768427e-10, 0.1013724533516e+01,
      0.2629832328990e-01, 0.2518630264831e-10, 0.6108081057122e+01, 0.5481254917084e+01,
      0.2421901455384e-10, 0.1651097776260e+01, 0.1349867339771e+01, 0.6348533267831e-11,
      0.3220226560321e+01, 0.8433466158131e+02};

  /* Sun-to-Earth, T^1, Z */
  static const double e1z[] = {
      0.2278290449966e-05, 0.3413716033863e+01, 0.6283075850446e+01, 0.5429458209830e-07,
      0.0000000000000e+00, 0.0000000000000e+00, 0.1903240492525e-07, 0.3370592358297e+01,
      0.1256615170089e+02, 0.2385409276743e-09, 0.3327914718416e+01, 0.1884922755134e+02,
      0.8676928342573e-10, 0.1824006811264e+01, 0.5223693906222e+01, 0.7765442593544e-10,
      0.3888564279247e+01, 0.5507553240374e+01, 0.7066158332715e-10, 0.5194267231944e+01,
      0.2352866153506e+01, 0.7092175288657e-10, 0.2333246960021e+01, 0.8399684731857e+02,
      0.5357582213535e-10, 0.2224031176619e+01, 0.5296909721118e+00, 0.3828035865021e-10,
      0.2156710933584e+01, 0.6279552690824e+01,

      0.3824857220427e-10, 0.1529755219915e+01, 0.6286599010068e+01, 0.3286995181628e-10,
      0.4879512900483e+01, 0.1021328554739e+02};

  /* Sun-to-Earth, T^2, X */
  static const double e2x[] = {-0.4143818297913e-10, 0.0000000000000e+00, 0.0000000000000e+00,
                               0.2171497694435e-10,  0.4398225628264e+01, 0.1256615170089e+02,
                               0.9845398442516e-11,  0.2079720838384e+00, 0.6283075850446e+01,
                               0.9256833552682e-12,  0.4191264694361e+01, 0.1884922755134e+02,
                               0.1022049384115e-12,  0.5381133195658e+01, 0.8399684731857e+02};

  /* Sun-to-Earth, T^2, Y */
  static const double e2y[] = {0.5063375872532e-10, 0.0000000000000e+00, 0.0000000000000e+00,
                               0.2173815785980e-10, 0.2827805833053e+01, 0.1256615170089e+02,
                               0.1010231999920e-10, 0.4634612377133e+01, 0.6283075850446e+01,
                               0.9259745317636e-12, 0.2620612076189e+01, 0.1884922755134e+02,
                               0.1022202095812e-12, 0.3809562326066e+01, 0.8399684731857e+02};

  /* Sun-to-Earth, T^2, Z */
  static const double e2z[] = {0.9722666114891e-10,  0.5152219582658e+01, 0.6283075850446e+01,
                               -0.3494819171909e-11, 0.0000000000000e+00, 0.0000000000000e+00,
                               0.6713034376076e-12,  0.6440188750495e+00, 0.1256615170089e+02};

  /* SSB-to-Sun, T^0, X */
  static const double s0x[] = {
      0.4956757536410e-02, 0.3741073751789e+01, 0.5296909721118e+00, 0.2718490072522e-02,
      0.4016011511425e+01, 0.2132990797783e+00, 0.1546493974344e-02, 0.2170528330642e+01,
      0.3813291813120e-01, 0.8366855276341e-03, 0.2339614075294e+01, 0.7478166569050e-01,
      0.2936777942117e-03, 0.0000000000000e+00, 0.0000000000000e+00, 0.1201317439469e-03,
      0.4090736353305e+01, 0.1059381944224e+01, 0.7578550887230e-04, 0.3241518088140e+01,
      0.4265981595566e+00, 0.1941787367773e-04, 0.1012202064330e+01, 0.2061856251104e+00,
      0.1889227765991e-04, 0.3892520416440e+01, 0.2204125344462e+00, 0.1937896968613e-04,
      0.4797779441161e+01, 0.1495633313810e+00,

      0.1434506110873e-04, 0.3868960697933e+01, 0.5225775174439e+00, 0.1406659911580e-04,
      0.4759766557397e+00, 0.5368044267797e+00, 0.1179022300202e-04, 0.7774961520598e+00,
      0.7626583626240e-01, 0.8085864460959e-05, 0.3254654471465e+01, 0.3664874755930e-01,
      0.7622752967615e-05, 0.4227633103489e+01, 0.3961708870310e-01, 0.6209171139066e-05,
      0.2791828325711e+00, 0.7329749511860e-01, 0.4366435633970e-05, 0.4440454875925e+01,
      0.1589072916335e+01, 0.3792124889348e-05, 0.5156393842356e+01, 0.7113454667900e-02,
      0.3154548963402e-05, 0.6157005730093e+01, 0.4194847048887e+00, 0.3088359882942e-05,
      0.2494567553163e+01, 0.6398972393349e+00,

      0.2788440902136e-05, 0.4934318747989e+01, 0.1102062672231e+00, 0.3039928456376e-05,
      0.4895077702640e+01, 0.6283075850446e+01, 0.2272258457679e-05, 0.5278394064764e+01,
      0.1030928125552e+00, 0.2162007057957e-05, 0.5802978019099e+01, 0.3163918923335e+00,
      0.1767632855737e-05, 0.3415346595193e-01, 0.1021328554739e+02, 0.1349413459362e-05,
      0.2001643230755e+01, 0.1484170571900e-02, 0.1170141900476e-05, 0.2424750491620e+01,
      0.6327837846670e+00, 0.1054355266820e-05, 0.3123311487576e+01, 0.4337116142245e+00,
      0.9800822461610e-06, 0.3026258088130e+01, 0.1052268489556e+01, 0.1091203749931e-05,
      0.3157811670347e+01, 0.1162474756779e+01,

      0.6960236715913e-06, 0.8219570542313e+00, 0.1066495398892e+01, 0.5689257296909e-06,
      0.1323052375236e+01, 0.9491756770005e+00, 0.6613172135802e-06, 0.2765348881598e+00,
      0.8460828644453e+00, 0.6277702517571e-06, 0.5794064466382e+01, 0.1480791608091e+00,
      0.6304884066699e-06, 0.7323555380787e+00, 0.2243449970715e+00, 0.4897850467382e-06,
      0.3062464235399e+01, 0.3340612434717e+01, 0.3759148598786e-06, 0.4588290469664e+01,
      0.3516457698740e-01, 0.3110520548195e-06, 0.1374299536572e+01, 0.6373574839730e-01,
      0.3064708359780e-06, 0.4222267485047e+01, 0.1104591729320e-01, 0.2856347168241e-06,
      0.3714202944973e+01, 0.1510475019529e+00,

      0.2840945514288e-06, 0.2847972875882e+01, 0.4110125927500e-01, 0.2378951599405e-06,
      0.3762072563388e+01, 0.2275259891141e+00, 0.2714229481417e-06, 0.1036049980031e+01,
      0.2535050500000e-01, 0.2323551717307e-06, 0.4682388599076e+00, 0.8582758298370e-01,
      0.1881790512219e-06, 0.4790565425418e+01, 0.2118763888447e+01, 0.2261353968371e-06,
      0.1669144912212e+01, 0.7181332454670e-01, 0.2214546389848e-06, 0.3937717281614e+01,
      0.2968341143800e-02, 0.2184915594933e-06, 0.1129169845099e+00, 0.7775000683430e-01,
      0.2000164937936e-06, 0.4030009638488e+01, 0.2093666171530e+00, 0.1966105136719e-06,
      0.8745955786834e+00, 0.2172315424036e+00,

      0.1904742332624e-06, 0.5919743598964e+01, 0.2022531624851e+00, 0.1657399705031e-06,
      0.2549141484884e+01, 0.7358765972222e+00, 0.1574070533987e-06, 0.5277533020230e+01,
      0.7429900518901e+00, 0.1832261651039e-06, 0.3064688127777e+01, 0.3235053470014e+00,
      0.1733615346569e-06, 0.3011432799094e+01, 0.1385174140878e+00, 0.1549124014496e-06,
      0.4005569132359e+01, 0.5154640627760e+00, 0.1637044713838e-06, 0.1831375966632e+01,
      0.8531963191132e+00, 0.1123420082383e-06, 0.1180270407578e+01, 0.1990721704425e+00,
      0.1083754165740e-06, 0.3414101320863e+00, 0.5439178814476e+00, 0.1156638012655e-06,
      0.6130479452594e+00, 0.5257585094865e+00,

      0.1142548785134e-06, 0.3724761948846e+01, 0.5336234347371e+00, 0.7921463895965e-07,
      0.2435425589361e+01, 0.1478866649112e+01, 0.7428600285231e-07, 0.3542144398753e+01,
      0.2164800718209e+00, 0.8323211246747e-07, 0.3525058072354e+01, 0.1692165728891e+01,
      0.7257595116312e-07, 0.1364299431982e+01, 0.2101180877357e+00, 0.7111185833236e-07,
      0.2460478875808e+01, 0.4155522422634e+00, 0.6868090383716e-07, 0.4397327670704e+01,
      0.1173197218910e+00, 0.7226419974175e-07, 0.4042647308905e+01, 0.1265567569334e+01,
      0.6955642383177e-07, 0.2865047906085e+01, 0.9562891316684e+00, 0.7492139296331e-07,
      0.5014278994215e+01, 0.1422690933580e-01,

      0.6598363128857e-07, 0.2376730020492e+01, 0.6470106940028e+00, 0.7381147293385e-07,
      0.3272990384244e+01, 0.1581959461667e+01, 0.6402909624032e-07, 0.5302290955138e+01,
      0.9597935788730e-01, 0.6237454263857e-07, 0.5444144425332e+01, 0.7084920306520e-01,
      0.5241198544016e-07, 0.4215359579205e+01, 0.5265099800692e+00, 0.5144463853918e-07,
      0.1218916689916e+00, 0.5328719641544e+00, 0.5868164772299e-07, 0.2369402002213e+01,
      0.7871412831580e-01, 0.6233195669151e-07, 0.1254922242403e+01, 0.2608790314060e+02,
      0.6068463791422e-07, 0.5679713760431e+01, 0.1114304132498e+00, 0.4359361135065e-07,
      0.6097219641646e+00, 0.1375773836557e+01,

      0.4686510366826e-07, 0.4786231041431e+01, 0.1143987543936e+00, 0.3758977287225e-07,
      0.1167368068139e+01, 0.1596186371003e+01, 0.4282051974778e-07, 0.1519471064319e+01,
      0.2770348281756e+00, 0.5153765386113e-07, 0.1860532322984e+01, 0.2228608264996e+00,
      0.4575129387188e-07, 0.7632857887158e+00, 0.1465949902372e+00, 0.3326844933286e-07,
      0.1298219485285e+01, 0.5070101000000e-01, 0.3748617450984e-07, 0.1046510321062e+01,
      0.4903339079539e+00, 0.2816756661499e-07, 0.3434522346190e+01, 0.2991266627620e+00,
      0.3412750405039e-07, 0.2523766270318e+01, 0.3518164938661e+00, 0.2655796761776e-07,
      0.2904422260194e+01, 0.6256703299991e+00,

      0.2963597929458e-07, 0.5923900431149e+00, 0.1099462426779e+00, 0.2539523734781e-07,
      0.4851947722567e+01, 0.1256615170089e+02, 0.2283087914139e-07, 0.3400498595496e+01,
      0.6681224869435e+01, 0.2321309799331e-07, 0.5789099148673e+01, 0.3368040641550e-01,
      0.2549657649750e-07, 0.3991856479792e-01, 0.1169588211447e+01, 0.2290462303977e-07,
      0.2788567577052e+01, 0.1045155034888e+01, 0.1945398522914e-07, 0.3290896998176e+01,
      0.1155361302111e+01, 0.1849171512638e-07, 0.2698060129367e+01, 0.4452511715700e-02,
      0.1647199834254e-07, 0.3016735644085e+01, 0.4408250688924e+00, 0.1529530765273e-07,
      0.5573043116178e+01, 0.6521991896920e-01,

      0.1433199339978e-07, 0.1481192356147e+01, 0.9420622223326e+00, 0.1729134193602e-07,
      0.1422817538933e+01, 0.2108507877249e+00, 0.1716463931346e-07, 0.3469468901855e+01,
      0.2157473718317e+00, 0.1391206061378e-07, 0.6122436220547e+01, 0.4123712502208e+00,
      0.1404746661924e-07, 0.1647765641936e+01, 0.4258542984690e-01, 0.1410452399455e-07,
      0.5989729161964e+01, 0.2258291676434e+00, 0.1089828772168e-07, 0.2833705509371e+01,
      0.4226656969313e+00, 0.1047374564948e-07, 0.5090690007331e+00, 0.3092784376656e+00,
      0.1358279126532e-07, 0.5128990262836e+01, 0.7923417740620e-01, 0.1020456476148e-07,
      0.9632772880808e+00, 0.1456308687557e+00,

      0.1033428735328e-07, 0.3223779318418e+01, 0.1795258541446e+01, 0.1412435841540e-07,
      0.2410271572721e+01, 0.1525316725248e+00, 0.9722759371574e-08, 0.2333531395690e+01,
      0.8434341241180e-01, 0.9657334084704e-08, 0.6199270974168e+01, 0.1272681024002e+01,
      0.1083641148690e-07, 0.2864222292929e+01, 0.7032915397480e-01, 0.1067318403838e-07,
      0.5833458866568e+00, 0.2123349582968e+00, 0.1062366201976e-07, 0.4307753989494e+01,
      0.2142632012598e+00, 0.1236364149266e-07, 0.2873917870593e+01, 0.1847279083684e+00,
      0.1092759489593e-07, 0.2959887266733e+01, 0.1370332435159e+00, 0.8912069362899e-08,
      0.5141213702562e+01, 0.2648454860559e+01,

      0.9656467707970e-08, 0.4532182462323e+01, 0.4376440768498e+00, 0.8098386150135e-08,
      0.2268906338379e+01, 0.2880807454688e+00, 0.7857714675000e-08, 0.4055544260745e+01,
      0.2037373330570e+00, 0.7288455940646e-08, 0.5357901655142e+01, 0.1129145838217e+00,
      0.9450595950552e-08, 0.4264926963939e+01, 0.5272426800584e+00, 0.9381718247537e-08,
      0.7489366976576e-01, 0.5321392641652e+00, 0.7079052646038e-08, 0.1923311052874e+01,
      0.6288513220417e+00, 0.9259004415344e-08, 0.2970256853438e+01, 0.1606092486742e+00,
      0.8259801499742e-08, 0.3327056314697e+01, 0.8389694097774e+00, 0.6476334355779e-08,
      0.2954925505727e+01, 0.2008557621224e+01,

      0.5984021492007e-08, 0.9138753105829e+00, 0.2042657109477e+02, 0.5989546863181e-08,
      0.3244464082031e+01, 0.2111650433779e+01, 0.6233108606023e-08, 0.4995232638403e+00,
      0.4305306221819e+00, 0.6877299149965e-08, 0.2834987233449e+01, 0.9561746721300e-02,
      0.8311234227190e-08, 0.2202951835758e+01, 0.3801276407308e+00, 0.6599472832414e-08,
      0.4478581462618e+01, 0.1063314406849e+01, 0.6160491096549e-08, 0.5145858696411e+01,
      0.1368660381889e+01, 0.6164772043891e-08, 0.3762976697911e+00, 0.4234171675140e+00,
      0.6363248684450e-08, 0.3162246718685e+01, 0.1253008786510e-01, 0.6448587520999e-08,
      0.3442693302119e+01, 0.5287268506303e+00,

      0.6431662283977e-08, 0.8977549136606e+00, 0.5306550935933e+00, 0.6351223158474e-08,
      0.4306447410369e+01, 0.5217580628120e+02, 0.5476721393451e-08, 0.3888529177855e+01,
      0.2221856701002e+01, 0.5341772572619e-08, 0.2655560662512e+01, 0.7466759693650e-01,
      0.5337055758302e-08, 0.5164990735946e+01, 0.7489573444450e-01, 0.5373120816787e-08,
      0.6041214553456e+01, 0.1274714967946e+00, 0.5392351705426e-08, 0.9177763485932e+00,
      0.1055449481598e+01, 0.6688495850205e-08, 0.3089608126937e+01, 0.2213766559277e+00,
      0.5072003660362e-08, 0.4311316541553e+01, 0.2132517061319e+00, 0.5070726650455e-08,
      0.5790675464444e+00, 0.2133464534247e+00,

      0.5658012950032e-08, 0.2703945510675e+01, 0.7287631425543e+00, 0.4835509924854e-08,
      0.2975422976065e+01, 0.7160067364790e-01, 0.6479821978012e-08, 0.1324168733114e+01,
      0.2209183458640e-01, 0.6230636494980e-08, 0.2860103632836e+01, 0.3306188016693e+00,
      0.4649239516213e-08, 0.4832259763403e+01, 0.7796265773310e-01, 0.6487325792700e-08,
      0.2726165825042e+01, 0.3884652414254e+00, 0.4682823682770e-08, 0.6966602455408e+00,
      0.1073608853559e+01, 0.5704230804976e-08, 0.5669634104606e+01, 0.8731175355560e-01,
      0.6125413585489e-08, 0.1513386538915e+01, 0.7605151500000e-01, 0.6035825038187e-08,
      0.1983509168227e+01, 0.9846002785331e+00,

      0.4331123462303e-08, 0.2782892992807e+01, 0.4297791515992e+00, 0.4681107685143e-08,
      0.5337232886836e+01, 0.2127790306879e+00, 0.4669105829655e-08, 0.5837133792160e+01,
      0.2138191288687e+00, 0.5138823602365e-08, 0.3080560200507e+01, 0.7233337363710e-01,
      0.4615856664534e-08, 0.1661747897471e+01, 0.8603097737811e+00, 0.4496916702197e-08,
      0.2112508027068e+01, 0.7381754420900e-01, 0.4278479042945e-08, 0.5716528462627e+01,
      0.7574578717200e-01, 0.3840525503932e-08, 0.6424172726492e+00, 0.3407705765729e+00,
      0.4866636509685e-08, 0.4919244697715e+01, 0.7722995774390e-01, 0.3526100639296e-08,
      0.2550821052734e+01, 0.6225157782540e-01,

      0.3939558488075e-08, 0.3939331491710e+01, 0.5268983110410e-01, 0.4041268772576e-08,
      0.2275337571218e+01, 0.3503323232942e+00, 0.3948761842853e-08, 0.1999324200790e+01,
      0.1451108196653e+00, 0.3258394550029e-08, 0.9121001378200e+00, 0.5296435984654e+00,
      0.3257897048761e-08, 0.3428428660869e+01, 0.5297383457582e+00, 0.3842559031298e-08,
      0.6132927720035e+01, 0.9098186128426e+00, 0.3109920095448e-08, 0.7693650193003e+00,
      0.3932462625300e-02, 0.3132237775119e-08, 0.3621293854908e+01, 0.2346394437820e+00,
      0.3942189421510e-08, 0.4841863659733e+01, 0.3180992042600e-02, 0.3796972285340e-08,
      0.1814174994268e+01, 0.1862120789403e+00,

      0.3995640233688e-08, 0.1386990406091e+01, 0.4549093064213e+00, 0.2875013727414e-08,
      0.9178318587177e+00, 0.1905464808669e+01, 0.3073719932844e-08, 0.2688923811835e+01,
      0.3628624111593e+00, 0.2731016580075e-08, 0.1188259127584e+01, 0.2131850110243e+00,
      0.2729549896546e-08, 0.3702160634273e+01, 0.2134131485323e+00, 0.3339372892449e-08,
      0.7199163960331e+00, 0.2007689919132e+00, 0.2898833764204e-08, 0.1916709364999e+01,
      0.5291709230214e+00, 0.2894536549362e-08, 0.2424043195547e+01, 0.5302110212022e+00,
      0.3096872473843e-08, 0.4445894977497e+01, 0.2976424921901e+00, 0.2635672326810e-08,
      0.3814366984117e+01, 0.1485980103780e+01,

      0.3649302697001e-08, 0.2924200596084e+01, 0.6044726378023e+00, 0.3127954585895e-08,
      0.1842251648327e+01, 0.1084620721060e+00, 0.2616040173947e-08, 0.4155841921984e+01,
      0.1258454114666e+01, 0.2597395859860e-08, 0.1158045978874e+00, 0.2103781122809e+00,
      0.2593286172210e-08, 0.4771850408691e+01, 0.2162200472757e+00, 0.2481823585747e-08,
      0.4608842558889e+00, 0.1062562936266e+01, 0.2742219550725e-08, 0.1538781127028e+01,
      0.5651155736444e+00, 0.3199558469610e-08, 0.3226647822878e+00, 0.7036329877322e+00,
      0.2666088542957e-08, 0.1967991731219e+00, 0.1400015846597e+00, 0.2397067430580e-08,
      0.3707036669873e+01, 0.2125476091956e+00,

      0.2376570772738e-08, 0.1182086628042e+01, 0.2140505503610e+00, 0.2547228007887e-08,
      0.4906256820629e+01, 0.1534957940063e+00, 0.2265575594114e-08, 0.3414949866857e+01,
      0.2235935264888e+00, 0.2464381430585e-08, 0.4599122275378e+01, 0.2091065926078e+00,
      0.2433408527044e-08, 0.2830751145445e+00, 0.2174915669488e+00, 0.2443605509076e-08,
      0.4212046432538e+01, 0.1739420156204e+00, 0.2319779262465e-08, 0.9881978408630e+00,
      0.7530171478090e-01, 0.2284622835465e-08, 0.5565347331588e+00, 0.7426161660010e-01,
      0.2467268750783e-08, 0.5655708150766e+00, 0.2526561439362e+00, 0.2808513492782e-08,
      0.1418405053408e+01, 0.5636314030725e+00,

      0.2329528932532e-08, 0.4069557545675e+01, 0.1056200952181e+01, 0.9698639532817e-09,
      0.1074134313634e+01, 0.7826370942180e+02};

  /* SSB-to-Sun, T^0, Y */
  static const double s0y[] = {
      0.4955392320126e-02, 0.2170467313679e+01, 0.5296909721118e+00, 0.2722325167392e-02,
      0.2444433682196e+01, 0.2132990797783e+00, 0.1546579925346e-02, 0.5992779281546e+00,
      0.3813291813120e-01, 0.8363140252966e-03, 0.7687356310801e+00, 0.7478166569050e-01,
      0.3385792683603e-03, 0.0000000000000e+00, 0.0000000000000e+00, 0.1201192221613e-03,
      0.2520035601514e+01, 0.1059381944224e+01, 0.7587125720554e-04, 0.1669954006449e+01,
      0.4265981595566e+00, 0.1964155361250e-04, 0.5707743963343e+01, 0.2061856251104e+00,
      0.1891900364909e-04, 0.2320960679937e+01, 0.2204125344462e+00, 0.1937373433356e-04,
      0.3226940689555e+01, 0.1495633313810e+00,

      0.1437139941351e-04, 0.2301626908096e+01, 0.5225775174439e+00, 0.1406267683099e-04,
      0.5188579265542e+01, 0.5368044267797e+00, 0.1178703080346e-04, 0.5489483248476e+01,
      0.7626583626240e-01, 0.8079835186041e-05, 0.1683751835264e+01, 0.3664874755930e-01,
      0.7623253594652e-05, 0.2656400462961e+01, 0.3961708870310e-01, 0.6248667483971e-05,
      0.4992775362055e+01, 0.7329749511860e-01, 0.4366353695038e-05, 0.2869706279678e+01,
      0.1589072916335e+01, 0.3829101568895e-05, 0.3572131359950e+01, 0.7113454667900e-02,
      0.3175733773908e-05, 0.4535372530045e+01, 0.4194847048887e+00, 0.3092437902159e-05,
      0.9230153317909e+00, 0.6398972393349e+00,

      0.2874168812154e-05, 0.3363143761101e+01, 0.1102062672231e+00, 0.3040119321826e-05,
      0.3324250895675e+01, 0.6283075850446e+01, 0.2699723308006e-05, 0.2917882441928e+00,
      0.1030928125552e+00, 0.2134832683534e-05, 0.4220997202487e+01, 0.3163918923335e+00,
      0.1770412139433e-05, 0.4747318496462e+01, 0.1021328554739e+02, 0.1377264209373e-05,
      0.4305058462401e+00, 0.1484170571900e-02, 0.1127814538960e-05, 0.8538177240740e+00,
      0.6327837846670e+00, 0.1055608090130e-05, 0.1551800742580e+01, 0.4337116142245e+00,
      0.9802673861420e-06, 0.1459646735377e+01, 0.1052268489556e+01, 0.1090329461951e-05,
      0.1587351228711e+01, 0.1162474756779e+01,

      0.6959590025090e-06, 0.5534442628766e+01, 0.1066495398892e+01, 0.5664914529542e-06,
      0.6030673003297e+01, 0.9491756770005e+00, 0.6607787763599e-06, 0.4989507233927e+01,
      0.8460828644453e+00, 0.6269725742838e-06, 0.4222951804572e+01, 0.1480791608091e+00,
      0.6301889697863e-06, 0.5444316669126e+01, 0.2243449970715e+00, 0.4891042662861e-06,
      0.1490552839784e+01, 0.3340612434717e+01, 0.3457083123290e-06, 0.3030475486049e+01,
      0.3516457698740e-01, 0.3032559967314e-06, 0.2652038793632e+01, 0.1104591729320e-01,
      0.2841133988903e-06, 0.1276744786829e+01, 0.4110125927500e-01, 0.2855564444432e-06,
      0.2143368674733e+01, 0.1510475019529e+00,

      0.2765157135038e-06, 0.5444186109077e+01, 0.6373574839730e-01, 0.2382312465034e-06,
      0.2190521137593e+01, 0.2275259891141e+00, 0.2808060365077e-06, 0.5735195064841e+01,
      0.2535050500000e-01, 0.2332175234405e-06, 0.9481985524859e-01, 0.7181332454670e-01,
      0.2322488199659e-06, 0.5180499361533e+01, 0.8582758298370e-01, 0.1881850258423e-06,
      0.3219788273885e+01, 0.2118763888447e+01, 0.2196111392808e-06, 0.2366941159761e+01,
      0.2968341143800e-02, 0.2183810335519e-06, 0.4825445110915e+01, 0.7775000683430e-01,
      0.2002733093326e-06, 0.2457148995307e+01, 0.2093666171530e+00, 0.1967111767229e-06,
      0.5586291545459e+01, 0.2172315424036e+00,

      0.1568473250543e-06, 0.3708003123320e+01, 0.7429900518901e+00, 0.1852528314300e-06,
      0.4310638151560e+01, 0.2022531624851e+00, 0.1832111226447e-06, 0.1494665322656e+01,
      0.3235053470014e+00, 0.1746805502310e-06, 0.1451378500784e+01, 0.1385174140878e+00,
      0.1555730966650e-06, 0.1068040418198e+01, 0.7358765972222e+00, 0.1554883462559e-06,
      0.2442579035461e+01, 0.5154640627760e+00, 0.1638380568746e-06, 0.2597913420625e+00,
      0.8531963191132e+00, 0.1159938593640e-06, 0.5834512021280e+01, 0.1990721704425e+00,
      0.1083427965695e-06, 0.5054033177950e+01, 0.5439178814476e+00, 0.1156480369431e-06,
      0.5325677432457e+01, 0.5257585094865e+00,

      0.1141308860095e-06, 0.2153403923857e+01, 0.5336234347371e+00, 0.7913146470946e-07,
      0.8642846847027e+00, 0.1478866649112e+01, 0.7439752463733e-07, 0.1970628496213e+01,
      0.2164800718209e+00, 0.7280277104079e-07, 0.6073307250609e+01, 0.2101180877357e+00,
      0.8319567719136e-07, 0.1954371928334e+01, 0.1692165728891e+01, 0.7137705549290e-07,
      0.8904989440909e+00, 0.4155522422634e+00, 0.6900825396225e-07, 0.2825717714977e+01,
      0.1173197218910e+00, 0.7245757216635e-07, 0.2481677513331e+01, 0.1265567569334e+01,
      0.6961165696255e-07, 0.1292955312978e+01, 0.9562891316684e+00, 0.7571804456890e-07,
      0.3427517575069e+01, 0.1422690933580e-01,

      0.6605425721904e-07, 0.8052192701492e+00, 0.6470106940028e+00, 0.7375477357248e-07,
      0.1705076390088e+01, 0.1581959461667e+01, 0.7041664951470e-07, 0.4848356967891e+00,
      0.9597935788730e-01, 0.6322199535763e-07, 0.3878069473909e+01, 0.7084920306520e-01,
      0.5244380279191e-07, 0.2645560544125e+01, 0.5265099800692e+00, 0.5143125704988e-07,
      0.4834486101370e+01, 0.5328719641544e+00, 0.5871866319373e-07, 0.7981472548900e+00,
      0.7871412831580e-01, 0.6300822573871e-07, 0.5979398788281e+01, 0.2608790314060e+02,
      0.6062154271548e-07, 0.4108655402756e+01, 0.1114304132498e+00, 0.4361912339976e-07,
      0.5322624319280e+01, 0.1375773836557e+01,

      0.4417005920067e-07, 0.6240817359284e+01, 0.2770348281756e+00, 0.4686806749936e-07,
      0.3214977301156e+01, 0.1143987543936e+00, 0.3758892132305e-07, 0.5879809634765e+01,
      0.1596186371003e+01, 0.5151351332319e-07, 0.2893377688007e+00, 0.2228608264996e+00,
      0.4554683578572e-07, 0.5475427144122e+01, 0.1465949902372e+00, 0.3442381385338e-07,
      0.5992034796640e+01, 0.5070101000000e-01, 0.2831093954933e-07, 0.5367350273914e+01,
      0.3092784376656e+00, 0.3756267090084e-07, 0.5758171285420e+01, 0.4903339079539e+00,
      0.2816374679892e-07, 0.1863718700923e+01, 0.2991266627620e+00, 0.3419307025569e-07,
      0.9524347534130e+00, 0.3518164938661e+00,

      0.2904250494239e-07, 0.5304471615602e+01, 0.1099462426779e+00, 0.2471734511206e-07,
      0.1297069793530e+01, 0.6256703299991e+00, 0.2539620831872e-07, 0.3281126083375e+01,
      0.1256615170089e+02, 0.2281017868007e-07, 0.1829122133165e+01, 0.6681224869435e+01,
      0.2275319473335e-07, 0.5797198160181e+01, 0.3932462625300e-02, 0.2547755368442e-07,
      0.4752697708330e+01, 0.1169588211447e+01, 0.2285979669317e-07, 0.1223205292886e+01,
      0.1045155034888e+01, 0.1913386560994e-07, 0.1757532993389e+01, 0.1155361302111e+01,
      0.1809020525147e-07, 0.4246116108791e+01, 0.3368040641550e-01, 0.1649213300201e-07,
      0.1445162890627e+01, 0.4408250688924e+00,

      0.1834972793932e-07, 0.1126917567225e+01, 0.4452511715700e-02, 0.1439550648138e-07,
      0.6160756834764e+01, 0.9420622223326e+00, 0.1487645457041e-07, 0.4358761931792e+01,
      0.4123712502208e+00, 0.1731729516660e-07, 0.6134456753344e+01, 0.2108507877249e+00,
      0.1717747163567e-07, 0.1898186084455e+01, 0.2157473718317e+00, 0.1418190430374e-07,
      0.4180286741266e+01, 0.6521991896920e-01, 0.1404844134873e-07, 0.7654053565412e-01,
      0.4258542984690e-01, 0.1409842846538e-07, 0.4418612420312e+01, 0.2258291676434e+00,
      0.1090948346291e-07, 0.1260615686131e+01, 0.4226656969313e+00, 0.1357577323612e-07,
      0.3558248818690e+01, 0.7923417740620e-01,

      0.1018154061960e-07, 0.5676087241256e+01, 0.1456308687557e+00, 0.1412073972109e-07,
      0.8394392632422e+00, 0.1525316725248e+00, 0.1030938326496e-07, 0.1653593274064e+01,
      0.1795258541446e+01, 0.1180081567104e-07, 0.1285802592036e+01, 0.7032915397480e-01,
      0.9708510575650e-08, 0.7631889488106e+00, 0.8434341241180e-01, 0.9637689663447e-08,
      0.4630642649176e+01, 0.1272681024002e+01, 0.1068910429389e-07, 0.5294934032165e+01,
      0.2123349582968e+00, 0.1063716179336e-07, 0.2736266800832e+01, 0.2142632012598e+00,
      0.1234858713814e-07, 0.1302891146570e+01, 0.1847279083684e+00, 0.8912631189738e-08,
      0.3570415993621e+01, 0.2648454860559e+01,

      0.1036378285534e-07, 0.4236693440949e+01, 0.1370332435159e+00, 0.9667798501561e-08,
      0.2960768892398e+01, 0.4376440768498e+00, 0.8108314201902e-08, 0.6987781646841e+00,
      0.2880807454688e+00, 0.7648364324628e-08, 0.2499017863863e+01, 0.2037373330570e+00,
      0.7286136828406e-08, 0.3787426951665e+01, 0.1129145838217e+00, 0.9448237743913e-08,
      0.2694354332983e+01, 0.5272426800584e+00, 0.9374276106428e-08, 0.4787121277064e+01,
      0.5321392641652e+00, 0.7100226287462e-08, 0.3530238792101e+00, 0.6288513220417e+00,
      0.9253056659571e-08, 0.1399478925664e+01, 0.1606092486742e+00, 0.6636432145504e-08,
      0.3479575438447e+01, 0.1368660381889e+01,

      0.6469975312932e-08, 0.1383669964800e+01, 0.2008557621224e+01, 0.7335849729765e-08,
      0.1243698166898e+01, 0.9561746721300e-02, 0.8743421205855e-08, 0.3776164289301e+01,
      0.3801276407308e+00, 0.5993635744494e-08, 0.5627122113596e+01, 0.2042657109477e+02,
      0.5981008479693e-08, 0.1674336636752e+01, 0.2111650433779e+01, 0.6188535145838e-08,
      0.5214925208672e+01, 0.4305306221819e+00, 0.6596074017566e-08, 0.2907653268124e+01,
      0.1063314406849e+01, 0.6630815126226e-08, 0.2127643669658e+01, 0.8389694097774e+00,
      0.6156772830040e-08, 0.5082160803295e+01, 0.4234171675140e+00, 0.6446960563014e-08,
      0.1872100916905e+01, 0.5287268506303e+00,

      0.6429324424668e-08, 0.5610276103577e+01, 0.5306550935933e+00, 0.6302232396465e-08,
      0.1592152049607e+01, 0.1253008786510e-01, 0.6399244436159e-08, 0.2746214421532e+01,
      0.5217580628120e+02, 0.5474965172558e-08, 0.2317666374383e+01, 0.2221856701002e+01,
      0.5339293190692e-08, 0.1084724961156e+01, 0.7466759693650e-01, 0.5334733683389e-08,
      0.3594106067745e+01, 0.7489573444450e-01, 0.5392665782110e-08, 0.5630254365606e+01,
      0.1055449481598e+01, 0.6682075673789e-08, 0.1518480041732e+01, 0.2213766559277e+00,
      0.5079130495960e-08, 0.2739765115711e+01, 0.2132517061319e+00, 0.5077759793261e-08,
      0.5290711290094e+01, 0.2133464534247e+00,

      0.4832037368310e-08, 0.1404473217200e+01, 0.7160067364790e-01, 0.6463279674802e-08,
      0.6038381695210e+01, 0.2209183458640e-01, 0.6240592771560e-08, 0.1290170653666e+01,
      0.3306188016693e+00, 0.4672013521493e-08, 0.3261895939677e+01, 0.7796265773310e-01,
      0.6500650750348e-08, 0.1154522312095e+01, 0.3884652414254e+00, 0.6344161389053e-08,
      0.6206111545062e+01, 0.7605151500000e-01, 0.4682518370646e-08, 0.5409118796685e+01,
      0.1073608853559e+01, 0.5329460015591e-08, 0.1202985784864e+01, 0.7287631425543e+00,
      0.5701588675898e-08, 0.4098715257064e+01, 0.8731175355560e-01, 0.6030690867211e-08,
      0.4132033218460e+00, 0.9846002785331e+00,

      0.4336256312655e-08, 0.1211415991827e+01, 0.4297791515992e+00, 0.4688498808975e-08,
      0.3765479072409e+01, 0.2127790306879e+00, 0.4675578609335e-08, 0.4265540037226e+01,
      0.2138191288687e+00, 0.4225578112158e-08, 0.5237566010676e+01, 0.3407705765729e+00,
      0.5139422230028e-08, 0.1507173079513e+01, 0.7233337363710e-01, 0.4619995093571e-08,
      0.9023957449848e-01, 0.8603097737811e+00, 0.4494776255461e-08, 0.5414930552139e+00,
      0.7381754420900e-01, 0.4274026276788e-08, 0.4145735303659e+01, 0.7574578717200e-01,
      0.5018141789353e-08, 0.3344408829055e+01, 0.3180992042600e-02, 0.4866163952181e-08,
      0.3348534657607e+01, 0.7722995774390e-01,

      0.4111986020501e-08, 0.4198823597220e+00, 0.1451108196653e+00, 0.3356142784950e-08,
      0.5609144747180e+01, 0.1274714967946e+00, 0.4070575554551e-08, 0.7028411059224e+00,
      0.3503323232942e+00, 0.3257451857278e-08, 0.5624697983086e+01, 0.5296435984654e+00,
      0.3256973703026e-08, 0.1857842076707e+01, 0.5297383457582e+00, 0.3830771508640e-08,
      0.4562887279931e+01, 0.9098186128426e+00, 0.3725024005962e-08, 0.2358058692652e+00,
      0.1084620721060e+00, 0.3136763921756e-08, 0.2049731526845e+01, 0.2346394437820e+00,
      0.3795147256194e-08, 0.2432356296933e+00, 0.1862120789403e+00, 0.2877342229911e-08,
      0.5631101279387e+01, 0.1905464808669e+01,

      0.3076931798805e-08, 0.1117615737392e+01, 0.3628624111593e+00, 0.2734765945273e-08,
      0.5899826516955e+01, 0.2131850110243e+00, 0.2733405296885e-08, 0.2130562964070e+01,
      0.2134131485323e+00, 0.2898552353410e-08, 0.3462387048225e+00, 0.5291709230214e+00,
      0.2893736103681e-08, 0.8534352781543e+00, 0.5302110212022e+00, 0.3095717734137e-08,
      0.2875061429041e+01, 0.2976424921901e+00, 0.2636190425832e-08, 0.2242512846659e+01,
      0.1485980103780e+01, 0.3645512095537e-08, 0.1354016903958e+01, 0.6044726378023e+00,
      0.2808173547723e-08, 0.6705114365631e-01, 0.6225157782540e-01, 0.2625012866888e-08,
      0.4775705748482e+01, 0.5268983110410e-01,

      0.2572233995651e-08, 0.2638924216139e+01, 0.1258454114666e+01, 0.2604238824792e-08,
      0.4826358927373e+01, 0.2103781122809e+00, 0.2596886385239e-08, 0.3200388483118e+01,
      0.2162200472757e+00, 0.3228057304264e-08, 0.5384848409563e+01, 0.2007689919132e+00,
      0.2481601798252e-08, 0.5173373487744e+01, 0.1062562936266e+01, 0.2745977498864e-08,
      0.6250966149853e+01, 0.5651155736444e+00, 0.2669878833811e-08, 0.4906001352499e+01,
      0.1400015846597e+00, 0.3203986611711e-08, 0.5034333010005e+01, 0.7036329877322e+00,
      0.3354961227212e-08, 0.6108262423137e+01, 0.4549093064213e+00, 0.2400407324558e-08,
      0.2135399294955e+01, 0.2125476091956e+00,

      0.2379905859802e-08, 0.5893721933961e+01, 0.2140505503610e+00, 0.2550844302187e-08,
      0.3331940762063e+01, 0.1534957940063e+00, 0.2268824211001e-08, 0.1843418461035e+01,
      0.2235935264888e+00, 0.2464700891204e-08, 0.3029548547230e+01, 0.2091065926078e+00,
      0.2436814726024e-08, 0.4994717970364e+01, 0.2174915669488e+00, 0.2443623894745e-08,
      0.2645102591375e+01, 0.1739420156204e+00, 0.2318701783838e-08, 0.5700547397897e+01,
      0.7530171478090e-01, 0.2284448700256e-08, 0.5268898905872e+01, 0.7426161660010e-01,
      0.2468848123510e-08, 0.5276280575078e+01, 0.2526561439362e+00, 0.2814052350303e-08,
      0.6130168623475e+01, 0.5636314030725e+00,

      0.2243662755220e-08, 0.6631692457995e+00, 0.8886590321940e-01, 0.2330795855941e-08,
      0.2499435487702e+01, 0.1056200952181e+01, 0.9757679038404e-09, 0.5796846023126e+01,
      0.7826370942180e+02};

  /* SSB-to-Sun, T^0, Z */
  static const double s0z[] = {
      0.1181255122986e-03,  0.4607918989164e+00, 0.2132990797783e+00, 0.1127777651095e-03,
      0.4169146331296e+00,  0.5296909721118e+00, 0.4777754401806e-04, 0.4582657007130e+01,
      0.3813291813120e-01,  0.1129354285772e-04, 0.5758735142480e+01, 0.7478166569050e-01,
      -0.1149543637123e-04, 0.0000000000000e+00, 0.0000000000000e+00, 0.3298730512306e-05,
      0.5978801994625e+01,  0.4265981595566e+00, 0.2733376706079e-05, 0.7665413691040e+00,
      0.1059381944224e+01,  0.9426389657270e-06, 0.3710201265838e+01, 0.2061856251104e+00,
      0.8187517749552e-06,  0.3390675605802e+00, 0.2204125344462e+00, 0.4080447871819e-06,
      0.4552296640088e+00,  0.5225775174439e+00,

      0.3169973017028e-06,  0.3445455899321e+01, 0.5368044267797e+00, 0.2438098615549e-06,
      0.5664675150648e+01,  0.3664874755930e-01, 0.2601897517235e-06, 0.1931894095697e+01,
      0.1495633313810e+00,  0.2314558080079e-06, 0.3666319115574e+00, 0.3961708870310e-01,
      0.1962549548002e-06,  0.3167411699020e+01, 0.7626583626240e-01, 0.2180518287925e-06,
      0.1544420746580e+01,  0.7113454667900e-02, 0.1451382442868e-06, 0.1583756740070e+01,
      0.1102062672231e+00,  0.1358439007389e-06, 0.5239941758280e+01, 0.6398972393349e+00,
      0.1050585898028e-06,  0.2266958352859e+01, 0.3163918923335e+00, 0.1050029870186e-06,
      0.2711495250354e+01,  0.4194847048887e+00,

      0.9934920679800e-07,  0.1116208151396e+01, 0.1589072916335e+01, 0.1048395331560e-06,
      0.3408619600206e+01,  0.1021328554739e+02, 0.8370147196668e-07, 0.3810459401087e+01,
      0.2535050500000e-01,  0.7989856510998e-07, 0.3769910473647e+01, 0.7329749511860e-01,
      0.5441221655233e-07,  0.2416994903374e+01, 0.1030928125552e+00, 0.4610812906784e-07,
      0.5858503336994e+01,  0.4337116142245e+00, 0.3923022803444e-07, 0.3354170010125e+00,
      0.1484170571900e-02,  0.2610725582128e-07, 0.5410600646324e+01, 0.6327837846670e+00,
      0.2455279767721e-07,  0.6120216681403e+01, 0.1162474756779e+01, 0.2375530706525e-07,
      0.6055443426143e+01,  0.1052268489556e+01,

      0.1782967577553e-07,  0.3146108708004e+01, 0.8460828644453e+00, 0.1581687095238e-07,
      0.6255496089819e+00,  0.3340612434717e+01, 0.1594657672461e-07, 0.3782604300261e+01,
      0.1066495398892e+01,  0.1563448615040e-07, 0.1997775733196e+01, 0.2022531624851e+00,
      0.1463624258525e-07,  0.1736316792088e+00, 0.3516457698740e-01, 0.1331585056673e-07,
      0.4331941830747e+01,  0.9491756770005e+00, 0.1130634557637e-07, 0.6152017751825e+01,
      0.2968341143800e-02,  0.1028949607145e-07, 0.2101792614637e+00, 0.2275259891141e+00,
      0.1024074971618e-07,  0.4071833211074e+01, 0.5070101000000e-01, 0.8826956060303e-08,
      0.4861633688145e+00,  0.2093666171530e+00,

      0.8572230171541e-08,  0.5268190724302e+01, 0.4110125927500e-01, 0.7649332643544e-08,
      0.5134543417106e+01,  0.2608790314060e+02, 0.8581673291033e-08, 0.2920218146681e+01,
      0.1480791608091e+00,  0.8430589300938e-08, 0.3604576619108e+01, 0.2172315424036e+00,
      0.7776165501012e-08,  0.3772942249792e+01, 0.6373574839730e-01, 0.8311070234408e-08,
      0.6200412329888e+01,  0.3235053470014e+00, 0.6927365212582e-08, 0.4543353113437e+01,
      0.8531963191132e+00,  0.6791574208598e-08, 0.2882188406238e+01, 0.7181332454670e-01,
      0.5593100811839e-08,  0.1776646892780e+01, 0.7429900518901e+00, 0.4553381853021e-08,
      0.3949617611240e+01,  0.7775000683430e-01,

      0.5758000450068e-08,  0.3859251775075e+01, 0.1990721704425e+00, 0.4281283457133e-08,
      0.1466294631206e+01,  0.2118763888447e+01, 0.4206935661097e-08, 0.5421776011706e+01,
      0.1104591729320e-01,  0.4213751641837e-08, 0.3412048993322e+01, 0.2243449970715e+00,
      0.5310506239878e-08,  0.5421641370995e+00, 0.5154640627760e+00, 0.3827450341320e-08,
      0.8887314524995e+00,  0.1510475019529e+00, 0.4292435241187e-08, 0.1405043757194e+01,
      0.1422690933580e-01,  0.3189780702289e-08, 0.1060049293445e+01, 0.1173197218910e+00,
      0.3226611928069e-08,  0.6270858897442e+01, 0.2164800718209e+00, 0.2893897608830e-08,
      0.5117563223301e+01,  0.6470106940028e+00,

      0.3239852024578e-08,  0.4079092237983e+01, 0.2101180877357e+00, 0.2956892222200e-08,
      0.1594917021704e+01,  0.3092784376656e+00, 0.2980177912437e-08, 0.5258787667564e+01,
      0.4155522422634e+00,  0.3163725690776e-08, 0.3854589225479e+01, 0.8582758298370e-01,
      0.2662262399118e-08,  0.3561326430187e+01, 0.5257585094865e+00, 0.2766689135729e-08,
      0.3180732086830e+00,  0.1385174140878e+00, 0.2411600278464e-08, 0.3324798335058e+01,
      0.5439178814476e+00,  0.2483527695131e-08, 0.4169069291947e+00, 0.5336234347371e+00,
      0.7788777276590e-09,  0.1900569908215e+01, 0.5217580628120e+02};

  /* SSB-to-Sun, T^1, X */
  static const double s1x[] = {
      -0.1296310361520e-07, 0.0000000000000e+00, 0.0000000000000e+00, 0.8975769009438e-08,
      0.1128891609250e+01,  0.4265981595566e+00, 0.7771113441307e-08, 0.2706039877077e+01,
      0.2061856251104e+00,  0.7538303866642e-08, 0.2191281289498e+01, 0.2204125344462e+00,
      0.6061384579336e-08,  0.3248167319958e+01, 0.1059381944224e+01, 0.5726994235594e-08,
      0.5569981398610e+01,  0.5225775174439e+00, 0.5616492836424e-08, 0.5057386614909e+01,
      0.5368044267797e+00,  0.1010881584769e-08, 0.3473577116095e+01, 0.7113454667900e-02,
      0.7259606157626e-09,  0.3651858593665e+00, 0.6398972393349e+00, 0.8755095026935e-09,
      0.1662835408338e+01,  0.4194847048887e+00,

      0.5370491182812e-09,  0.1327673878077e+01, 0.4337116142245e+00, 0.5743773887665e-09,
      0.4250200846687e+01,  0.2132990797783e+00, 0.4408103140300e-09, 0.3598752574277e+01,
      0.1589072916335e+01,  0.3101892374445e-09, 0.4887822983319e+01, 0.1052268489556e+01,
      0.3209453713578e-09,  0.9702272295114e+00, 0.5296909721118e+00, 0.3017228286064e-09,
      0.5484462275949e+01,  0.1066495398892e+01, 0.3200700038601e-09, 0.2846613338643e+01,
      0.1495633313810e+00,  0.2137637279911e-09, 0.5692163292729e+00, 0.3163918923335e+00,
      0.1899686386727e-09,  0.2061077157189e+01, 0.2275259891141e+00, 0.1401994545308e-09,
      0.4177771136967e+01,  0.1102062672231e+00,

      0.1578057810499e-09,  0.5782460597335e+01, 0.7626583626240e-01, 0.1237713253351e-09,
      0.5705900866881e+01,  0.5154640627760e+00, 0.1313076837395e-09, 0.5163438179576e+01,
      0.3664874755930e-01,  0.1184963304860e-09, 0.3054804427242e+01, 0.6327837846670e+00,
      0.1238130878565e-09,  0.2317292575962e+01, 0.3961708870310e-01, 0.1015959527736e-09,
      0.2194643645526e+01,  0.7329749511860e-01, 0.9017954423714e-10, 0.2868603545435e+01,
      0.1990721704425e+00,  0.8668024955603e-10, 0.4923849675082e+01, 0.5439178814476e+00,
      0.7756083930103e-10,  0.3014334135200e+01, 0.9491756770005e+00, 0.7536503401741e-10,
      0.2704886279769e+01,  0.1030928125552e+00,

      0.5483308679332e-10,  0.6010983673799e+01, 0.8531963191132e+00, 0.5184339620428e-10,
      0.1952704573291e+01,  0.2093666171530e+00, 0.5108658712030e-10, 0.2958575786649e+01,
      0.2172315424036e+00,  0.5019424524650e-10, 0.1736317621318e+01, 0.2164800718209e+00,
      0.4909312625978e-10,  0.3167216416257e+01, 0.2101180877357e+00, 0.4456638901107e-10,
      0.7697579923471e+00,  0.3235053470014e+00, 0.4227030350925e-10, 0.3490910137928e+01,
      0.6373574839730e-01,  0.4095456040093e-10, 0.5178888984491e+00, 0.6470106940028e+00,
      0.4990537041422e-10,  0.3323887668974e+01, 0.1422690933580e-01, 0.4321170010845e-10,
      0.4288484987118e+01,  0.7358765972222e+00,

      0.3544072091802e-10,  0.6021051579251e+01, 0.5265099800692e+00, 0.3480198638687e-10,
      0.4600027054714e+01,  0.5328719641544e+00, 0.3440287244435e-10, 0.4349525970742e+01,
      0.8582758298370e-01,  0.3330628322713e-10, 0.2347391505082e+01, 0.1104591729320e-01,
      0.2973060707184e-10,  0.4789409286400e+01, 0.5257585094865e+00, 0.2932606766089e-10,
      0.5831693799927e+01,  0.5336234347371e+00, 0.2876972310953e-10, 0.2692638514771e+01,
      0.1173197218910e+00,  0.2827488278556e-10, 0.2056052487960e+01, 0.2022531624851e+00,
      0.2515028239756e-10,  0.7411863262449e+00, 0.9597935788730e-01, 0.2853033744415e-10,
      0.3948481024894e+01,  0.2118763888447e+01};

  /* SSB-to-Sun, T^1, Y */
  static const double s1y[] = {
      0.8989047573576e-08, 0.5840593672122e+01, 0.4265981595566e+00, 0.7815938401048e-08,
      0.1129664707133e+01, 0.2061856251104e+00, 0.7550926713280e-08, 0.6196589104845e+00,
      0.2204125344462e+00, 0.6056556925895e-08, 0.1677494667846e+01, 0.1059381944224e+01,
      0.5734142698204e-08, 0.4000920852962e+01, 0.5225775174439e+00, 0.5614341822459e-08,
      0.3486722577328e+01, 0.5368044267797e+00, 0.1028678147656e-08, 0.1877141024787e+01,
      0.7113454667900e-02, 0.7270792075266e-09, 0.5077167301739e+01, 0.6398972393349e+00,
      0.8734141726040e-09, 0.9069550282609e-01, 0.4194847048887e+00, 0.5377371402113e-09,
      0.6039381844671e+01, 0.4337116142245e+00,

      0.4729719431571e-09, 0.2153086311760e+01, 0.2132990797783e+00, 0.4458052820973e-09,
      0.5059830025565e+01, 0.5296909721118e+00, 0.4406855467908e-09, 0.2027971692630e+01,
      0.1589072916335e+01, 0.3101659310977e-09, 0.3317677981860e+01, 0.1052268489556e+01,
      0.3016749232545e-09, 0.3913703482532e+01, 0.1066495398892e+01, 0.3198541352656e-09,
      0.1275513098525e+01, 0.1495633313810e+00, 0.2142065389871e-09, 0.5301351614597e+01,
      0.3163918923335e+00, 0.1902615247592e-09, 0.4894943352736e+00, 0.2275259891141e+00,
      0.1613410990871e-09, 0.2449891130437e+01, 0.1102062672231e+00, 0.1576992165097e-09,
      0.4211421447633e+01, 0.7626583626240e-01,

      0.1241637259894e-09, 0.4140803368133e+01, 0.5154640627760e+00, 0.1313974830355e-09,
      0.3591920305503e+01, 0.3664874755930e-01, 0.1181697118258e-09, 0.1506314382788e+01,
      0.6327837846670e+00, 0.1238239742779e-09, 0.7461405378404e+00, 0.3961708870310e-01,
      0.1010107068241e-09, 0.6271010795475e+00, 0.7329749511860e-01, 0.9226316616509e-10,
      0.1259158839583e+01, 0.1990721704425e+00, 0.8664946419555e-10, 0.3353244696934e+01,
      0.5439178814476e+00, 0.7757230468978e-10, 0.1447677295196e+01, 0.9491756770005e+00,
      0.7693168628139e-10, 0.1120509896721e+01, 0.1030928125552e+00, 0.5487897454612e-10,
      0.4439380426795e+01, 0.8531963191132e+00,

      0.5196118677218e-10, 0.3788856619137e+00, 0.2093666171530e+00, 0.5110853339935e-10,
      0.1386879372016e+01, 0.2172315424036e+00, 0.5027804534813e-10, 0.1647881805466e+00,
      0.2164800718209e+00, 0.4922485922674e-10, 0.1594315079862e+01, 0.2101180877357e+00,
      0.6155599524400e-10, 0.0000000000000e+00, 0.0000000000000e+00, 0.4447147832161e-10,
      0.5480720918976e+01, 0.3235053470014e+00, 0.4144691276422e-10, 0.1931371033660e+01,
      0.6373574839730e-01, 0.4099950625452e-10, 0.5229611294335e+01, 0.6470106940028e+00,
      0.5060541682953e-10, 0.1731112486298e+01, 0.1422690933580e-01, 0.4293615946300e-10,
      0.2714571038925e+01, 0.7358765972222e+00,

      0.3545659845763e-10, 0.4451041444634e+01, 0.5265099800692e+00, 0.3479112041196e-10,
      0.3029385448081e+01, 0.5328719641544e+00, 0.3438516493570e-10, 0.2778507143731e+01,
      0.8582758298370e-01, 0.3297341285033e-10, 0.7898709807584e+00, 0.1104591729320e-01,
      0.2972585818015e-10, 0.3218785316973e+01, 0.5257585094865e+00, 0.2931707295017e-10,
      0.4260731012098e+01, 0.5336234347371e+00, 0.2897198149403e-10, 0.1120753978101e+01,
      0.1173197218910e+00, 0.2832293240878e-10, 0.4597682717827e+00, 0.2022531624851e+00,
      0.2864348326612e-10, 0.2169939928448e+01, 0.9597935788730e-01, 0.2852714675471e-10,
      0.2377659870578e+01, 0.2118763888447e+01};

  /* SSB-to-Sun, T^1, Z */
  static const double s1z[] = {
      0.5444220475678e-08, 0.1803825509310e+01, 0.2132990797783e+00, 0.3883412695596e-08,
      0.4668616389392e+01, 0.5296909721118e+00, 0.1334341434551e-08, 0.0000000000000e+00,
      0.0000000000000e+00, 0.3730001266883e-09, 0.5401405918943e+01, 0.2061856251104e+00,
      0.2894929197956e-09, 0.4932415609852e+01, 0.2204125344462e+00, 0.2857950357701e-09,
      0.3154625362131e+01, 0.7478166569050e-01, 0.2499226432292e-09, 0.3657486128988e+01,
      0.4265981595566e+00, 0.1937705443593e-09, 0.5740434679002e+01, 0.1059381944224e+01,
      0.1374894396320e-09, 0.1712857366891e+01, 0.5368044267797e+00, 0.1217248678408e-09,
      0.2312090870932e+01, 0.5225775174439e+00,

      0.7961052740870e-10, 0.5283368554163e+01, 0.3813291813120e-01, 0.4979225949689e-10,
      0.4298290471860e+01, 0.4194847048887e+00, 0.4388552286597e-10, 0.6145515047406e+01,
      0.7113454667900e-02, 0.2586835212560e-10, 0.3019448001809e+01, 0.6398972393349e+00};

  /* SSB-to-Sun, T^2, X */
  static const double s2x[] = {
      0.1603551636587e-11, 0.4404109410481e+01, 0.2061856251104e+00, 0.1556935889384e-11,
      0.4818040873603e+00, 0.2204125344462e+00, 0.1182594414915e-11, 0.9935762734472e+00,
      0.5225775174439e+00, 0.1158794583180e-11, 0.3353180966450e+01, 0.5368044267797e+00,
      0.9597358943932e-12, 0.5567045358298e+01, 0.2132990797783e+00, 0.6511516579605e-12,
      0.5630872420788e+01, 0.4265981595566e+00, 0.7419792747688e-12, 0.2156188581957e+01,
      0.5296909721118e+00, 0.3951972655848e-12, 0.1981022541805e+01, 0.1059381944224e+01,
      0.4478223877045e-12, 0.0000000000000e+00, 0.0000000000000e+00};

  /* SSB-to-Sun, T^2, Y */
  static const double s2y[] = {
      0.1609114495091e-11, 0.2831096993481e+01,  0.2061856251104e+00, 0.1560330784946e-11,
      0.5193058213906e+01, 0.2204125344462e+00,  0.1183535479202e-11, 0.5707003443890e+01,
      0.5225775174439e+00, 0.1158183066182e-11,  0.1782400404928e+01, 0.5368044267797e+00,
      0.1032868027407e-11, 0.4036925452011e+01,  0.2132990797783e+00, 0.6540142847741e-12,
      0.4058241056717e+01, 0.4265981595566e+00,  0.7305236491596e-12, 0.6175401942957e+00,
      0.5296909721118e+00, -0.5580725052968e-12, 0.0000000000000e+00, 0.0000000000000e+00,
      0.3946122651015e-12, 0.4108265279171e+00,  0.1059381944224e+01};

  /* SSB-to-Sun, T^2, Z */
  static const double s2z[] = {0.3749920358054e-12, 0.3230285558668e+01, 0.2132990797783e+00,
                               0.2735037220939e-12, 0.6154322683046e+01, 0.5296909721118e+00};

  /* Pointers to coefficient arrays, in x,y,z sets */
  static const double *ce0[] = {e0x, e0y, e0z}, *ce1[] = {e1x, e1y, e1z}, *ce2[] = {e2x, e2y, e2z},
                      *cs0[] = {s0x, s0y, s0z}, *cs1[] = {s1x, s1y, s1z}, *cs2[] = {s2x, s2y, s2z};
  const double *coeffs;

  /* Numbers of terms for each component of the model, in x,y,z sets */
  static const int
      ne0[3] = {(int)(sizeof e0x / sizeof(double) / 3), (int)(sizeof e0y / sizeof(double) / 3),
                (int)(sizeof e0z / sizeof(double) / 3)},
      ne1[3] = {(int)(sizeof e1x / sizeof(double) / 3), (int)(sizeof e1y / sizeof(double) / 3),
                (int)(sizeof e1z / sizeof(double) / 3)},
      ne2[3] = {(int)(sizeof e2x / sizeof(double) / 3), (int)(sizeof e2y / sizeof(double) / 3),
                (int)(sizeof e2z / sizeof(double) / 3)},
      ns0[3] = {(int)(sizeof s0x / sizeof(double) / 3), (int)(sizeof s0y / sizeof(double) / 3),
                (int)(sizeof s0z / sizeof(double) / 3)},
      ns1[3] = {(int)(sizeof s1x / sizeof(double) / 3), (int)(sizeof s1y / sizeof(double) / 3),
                (int)(sizeof s1z / sizeof(double) / 3)},
      ns2[3] = {(int)(sizeof s2x / sizeof(double) / 3), (int)(sizeof s2y / sizeof(double) / 3),
                (int)(sizeof s2z / sizeof(double) / 3)};
  int nterms;

  /* Miscellaneous */
  int jstat, i, j;
  double t, t2, xyz, xyzd, a, b, c, ct, p, cp, ph[3], vh[3], pb[3], vb[3], x, y, z;

  /* ------------------------------------------------------------------ */

  /* Time since reference epoch, Julian years. */
  t = ((date1 - DJ00) + date2) / DJY;
  t2 = t * t;

  /* Set status. */
  jstat = fabs(t) <= 100.0 ? 0 : 1;

  /* X then Y then Z. */
  for (i = 0; i < 3; i++) {
    /* Initialize position and velocity component. */
    xyz = 0.0;
    xyzd = 0.0;

    /* ------------------------------------------------ */
    /* Obtain component of Sun to Earth ecliptic vector */
    /* ------------------------------------------------ */

    /* Sun to Earth, T^0 terms. */
    coeffs = ce0[i];
    nterms = ne0[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      p = b + c * t;
      xyz += a * cos(p);
      xyzd -= a * c * sin(p);
    }

    /* Sun to Earth, T^1 terms. */
    coeffs = ce1[i];
    nterms = ne1[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      ct = c * t;
      p = b + ct;
      cp = cos(p);
      xyz += a * t * cp;
      xyzd += a * (cp - ct * sin(p));
    }

    /* Sun to Earth, T^2 terms. */
    coeffs = ce2[i];
    nterms = ne2[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      ct = c * t;
      p = b + ct;
      cp = cos(p);
      xyz += a * t2 * cp;
      xyzd += a * t * (2.0 * cp - ct * sin(p));
    }

    /* Heliocentric Earth position and velocity component. */
    ph[i] = xyz;
    vh[i] = xyzd / DJY;

    /* ------------------------------------------------ */
    /* Obtain component of SSB to Earth ecliptic vector */
    /* ------------------------------------------------ */

    /* SSB to Sun, T^0 terms. */
    coeffs = cs0[i];
    nterms = ns0[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      p = b + c * t;
      xyz += a * cos(p);
      xyzd -= a * c * sin(p);
    }

    /* SSB to Sun, T^1 terms. */
    coeffs = cs1[i];
    nterms = ns1[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      ct = c * t;
      p = b + ct;
      cp = cos(p);
      xyz += a * t * cp;
      xyzd += a * (cp - ct * sin(p));
    }

    /* SSB to Sun, T^2 terms. */
    coeffs = cs2[i];
    nterms = ns2[i];
    for (j = 0; j < nterms; j++) {
      a = *coeffs++;
      b = *coeffs++;
      c = *coeffs++;
      ct = c * t;
      p = b + ct;
      cp = cos(p);
      xyz += a * t2 * cp;
      xyzd += a * t * (2.0 * cp - ct * sin(p));
    }

    /* Barycentric Earth position and velocity component. */
    pb[i] = xyz;
    vb[i] = xyzd / DJY;

    /* Next Cartesian component. */
  }

  /* Rotate from ecliptic to BCRS coordinates. */

  x = ph[0];
  y = ph[1];
  z = ph[2];
  pvh[0][0] = x + am12 * y + am13 * z;
  pvh[0][1] = am21 * x + am22 * y + am23 * z;
  pvh[0][2] = am32 * y + am33 * z;

  x = vh[0];
  y = vh[1];
  z = vh[2];
  pvh[1][0] = x + am12 * y + am13 * z;
  pvh[1][1] = am21 * x + am22 * y + am23 * z;
  pvh[1][2] = am32 * y + am33 * z;

  x = pb[0];
  y = pb[1];
  z = pb[2];
  pvb[0][0] = x + am12 * y + am13 * z;
  pvb[0][1] = am21 * x + am22 * y + am23 * z;
  pvb[0][2] = am32 * y + am33 * z;

  x = vb[0];
  y = vb[1];
  z = vb[2];
  pvb[1][0] = x + am12 * y + am13 * z;
  pvb[1][1] = am21 * x + am22 * y + am23 * z;
  pvb[1][2] = am32 * y + am33 * z;

  /* Return the status. */
  return jstat;
}

// The following are in support of iauMoon98()

static void iauS2pv(double theta, double phi, double r, double td, double pd, double rd,
                    double pv[2][3])
/*
**  - - - - - - - -
**   i a u S 2 p v
**  - - - - - - - -
**
**  Convert position/velocity from spherical to Cartesian coordinates.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     theta    double          longitude angle (radians)
**     phi      double          latitude angle (radians)
**     r        double          radial distance
**     td       double          rate of change of theta
**     pd       double          rate of change of phi
**     rd       double          rate of change of r
**
**  Returned:
**     pv       double[2][3]    pv-vector
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  double st, ct, sp, cp, rcp, x, y, rpd, w;

  st = sin(theta);
  ct = cos(theta);
  sp = sin(phi);
  cp = cos(phi);
  rcp = r * cp;
  x = rcp * ct;
  y = rcp * st;
  rpd = r * pd;
  w = rpd * sp - cp * rd;

  pv[0][0] = x;
  pv[0][1] = y;
  pv[0][2] = r * sp;
  pv[1][0] = -y * td - w * ct;
  pv[1][1] = x * td - w * st;
  pv[1][2] = rpd * cp + sp * rd;
}

static double iauObl06(double date1, double date2)
/*
**  - - - - - - - - -
**   i a u O b l 0 6
**  - - - - - - - - -
**
**  Mean obliquity of the ecliptic, IAU 2006 precession model.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  canonical model.
**
**  Given:
**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
**
**  Returned (function value):
**                  double   obliquity of the ecliptic (radians, Note 2)
**
**  Notes:
**
**  1) The TT date date1+date2 is a Julian Date, apportioned in any
**     convenient way between the two arguments.  For example,
**     JD(TT)=2450123.7 could be expressed in any of these ways,
**     among others:
**
**            date1          date2
**
**         2450123.7           0.0       (JD method)
**         2451545.0       -1421.3       (J2000 method)
**         2400000.5       50123.2       (MJD method)
**         2450123.5           0.2       (date & time method)
**
**     The JD method is the most natural and convenient to use in
**     cases where the loss of several decimal digits of resolution
**     is acceptable.  The J2000 method is best matched to the way
**     the argument is handled internally and will deliver the
**     optimum resolution.  The MJD method and the date & time methods
**     are both good compromises between resolution and convenience.
**
**  2) The result is the angle between the ecliptic and mean equator of
**     date date1+date2.
**
**  Reference:
**
**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  double t, eps0;

  /* Interval between fundamental date J2000.0 and given date (JC). */
  t = ((date1 - DJ00) + date2) / DJC;

  /* Mean obliquity. */
  eps0 = (84381.406 +
          (-46.836769 +
           (-0.0001831 + (0.00200340 + (-0.000000576 + (-0.0000000434) * t) * t) * t) * t) *
              t) *
         DAS2R;

  return eps0;
}

static void iauPfw06(double date1, double date2, double *gamb, double *phib, double *psib,
                     double *epsa)
/*
**  - - - - - - - - -
**   i a u P f w 0 6
**  - - - - - - - - -
**
**  Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards of Fundamental Astronomy) software collection.
**
**  Status:  canonical model.
**
**  Given:
**     date1,date2  double   TT as a 2-part Julian Date (Note 1)
**
**  Returned:
**     gamb         double   F-W angle gamma_bar (radians)
**     phib         double   F-W angle phi_bar (radians)
**     psib         double   F-W angle psi_bar (radians)
**     epsa         double   F-W angle epsilon_A (radians)
**
**  Notes:
**
**  1) The TT date date1+date2 is a Julian Date, apportioned in any
**     convenient way between the two arguments.  For example,
**     JD(TT)=2450123.7 could be expressed in any of these ways,
**     among others:
**
**            date1          date2
**
**         2450123.7           0.0       (JD method)
**         2451545.0       -1421.3       (J2000 method)
**         2400000.5       50123.2       (MJD method)
**         2450123.5           0.2       (date & time method)
**
**     The JD method is the most natural and convenient to use in
**     cases where the loss of several decimal digits of resolution
**     is acceptable.  The J2000 method is best matched to the way
**     the argument is handled internally and will deliver the
**     optimum resolution.  The MJD method and the date & time methods
**     are both good compromises between resolution and convenience.
**
**  2) Naming the following points:
**
**           e = J2000.0 ecliptic pole,
**           p = GCRS pole,
**           E = mean ecliptic pole of date,
**     and   P = mean pole of date,
**
**     the four Fukushima-Williams angles are as follows:
**
**        gamb = gamma_bar = epE
**        phib = phi_bar = pE
**        psib = psi_bar = pEP
**        epsa = epsilon_A = EP
**
**  3) The matrix representing the combined effects of frame bias and
**     precession is:
**
**        PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb)
**
**  4) The matrix representing the combined effects of frame bias,
**     precession and nutation is simply:
**
**        NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb)
**
**     where dP and dE are the nutation components with respect to the
**     ecliptic of date.
**
**  Reference:
**
**     Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
**
**  Called:
**     iauObl06     mean obliquity, IAU 2006
**
**  This revision:  2021 May 11
**
**  SOFA release 2023-10-11
**
**  Copyright (C) 2023 IAU SOFA Board.  See notes at end.
*/
{
  double t;

  /* Interval between fundamental date J2000.0 and given date (JC). */
  t = ((date1 - DJ00) + date2) / DJC;

  /* P03 bias+precession angles. */
  *gamb =
      (-0.052928 +
       (10.556378 + (0.4932044 + (-0.00031238 + (-0.000002788 + (0.0000000260) * t) * t) * t) * t) *
           t) *
      DAS2R;
  *phib = (84381.412819 +
           (-46.811016 +
            (0.0511268 + (0.00053289 + (-0.000000440 + (-0.0000000176) * t) * t) * t) * t) *
               t) *
          DAS2R;
  *psib = (-0.041775 +
           (5038.481484 +
            (1.5584175 + (-0.00018522 + (-0.000026452 + (-0.0000000148) * t) * t) * t) * t) *
               t) *
          DAS2R;
  *epsa = iauObl06(date1, date2);
}

static void iauIr(double r[3][3])
/*
**  - - - - - -
**   i a u I r
**  - - - - - -
**
**  Initialize an r-matrix to the identity matrix.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Returned:
**     r       double[3][3]    r-matrix
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  r[0][0] = 1.0;
  r[0][1] = 0.0;
  r[0][2] = 0.0;
  r[1][0] = 0.0;
  r[1][1] = 1.0;
  r[1][2] = 0.0;
  r[2][0] = 0.0;
  r[2][1] = 0.0;
  r[2][2] = 1.0;
}

static void iauRz(double psi, double r[3][3])
/*
**  - - - - - -
**   i a u R z
**  - - - - - -
**
**  Rotate an r-matrix about the z-axis.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     psi    double          angle (radians)
**
**  Given and returned:
**     r      double[3][3]    r-matrix, rotated
**
**  Notes:
**
**  1) Calling this function with positive psi incorporates in the
**     supplied r-matrix r an additional rotation, about the z-axis,
**     anticlockwise as seen looking towards the origin from positive z.
**
**  2) The additional rotation can be represented by this matrix:
**
**         (  + cos(psi)   + sin(psi)     0  )
**         (                                 )
**         (  - sin(psi)   + cos(psi)     0  )
**         (                                 )
**         (       0            0         1  )
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  double s, c, a00, a01, a02, a10, a11, a12;

  s = sin(psi);
  c = cos(psi);

  a00 = c * r[0][0] + s * r[1][0];
  a01 = c * r[0][1] + s * r[1][1];
  a02 = c * r[0][2] + s * r[1][2];
  a10 = -s * r[0][0] + c * r[1][0];
  a11 = -s * r[0][1] + c * r[1][1];
  a12 = -s * r[0][2] + c * r[1][2];

  r[0][0] = a00;
  r[0][1] = a01;
  r[0][2] = a02;
  r[1][0] = a10;
  r[1][1] = a11;
  r[1][2] = a12;
}

static void iauCp(const double p[3], double c[3])
/*
**  - - - - - -
**   i a u C p
**  - - - - - -
**
**  Copy a p-vector.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     p        double[3]     p-vector to be copied
**
**  Returned:
**     c        double[3]     copy
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  c[0] = p[0];
  c[1] = p[1];
  c[2] = p[2];
}

static void iauRx(double phi, double r[3][3])
/*
**  - - - - - -
**   i a u R x
**  - - - - - -
**
**  Rotate an r-matrix about the x-axis.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     phi    double          angle (radians)
**
**  Given and returned:
**     r      double[3][3]    r-matrix, rotated
**
**  Notes:
**
**  1) Calling this function with positive phi incorporates in the
**     supplied r-matrix r an additional rotation, about the x-axis,
**     anticlockwise as seen looking towards the origin from positive x.
**
**  2) The additional rotation can be represented by this matrix:
**
**         (  1        0            0      )
**         (                               )
**         (  0   + cos(phi)   + sin(phi)  )
**         (                               )
**         (  0   - sin(phi)   + cos(phi)  )
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  double s, c, a10, a11, a12, a20, a21, a22;

  s = sin(phi);
  c = cos(phi);

  a10 = c * r[1][0] + s * r[2][0];
  a11 = c * r[1][1] + s * r[2][1];
  a12 = c * r[1][2] + s * r[2][2];
  a20 = -s * r[1][0] + c * r[2][0];
  a21 = -s * r[1][1] + c * r[2][1];
  a22 = -s * r[1][2] + c * r[2][2];

  r[1][0] = a10;
  r[1][1] = a11;
  r[1][2] = a12;
  r[2][0] = a20;
  r[2][1] = a21;
  r[2][2] = a22;
}

static void iauRxp(const double r[3][3], const double p[3], double rp[3])
/*
**  - - - - - - -
**   i a u R x p
**  - - - - - - -
**
**  Multiply a p-vector by an r-matrix.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     r        double[3][3]    r-matrix
**     p        double[3]       p-vector
**
**  Returned:
**     rp       double[3]       r * p
**
**  Note:
**     It is permissible for p and rp to be the same array.
**
**  Called:
**     iauCp        copy p-vector
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  double w, wrp[3];
  int i, j;

  /* Matrix r * vector p. */
  for (j = 0; j < 3; j++) {
    w = 0.0;
    for (i = 0; i < 3; i++) {
      w += r[j][i] * p[i];
    }
    wrp[j] = w;
  }

  /* Return the result. */
  iauCp(wrp, rp);
}

static void iauRxpv(const double r[3][3], double pv[2][3], double rpv[2][3])
/*
**  - - - - - - - -
**   i a u R x p v
**  - - - - - - - -
**
**  Multiply a pv-vector by an r-matrix.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  vector/matrix support function.
**
**  Given:
**     r        double[3][3]    r-matrix
**     pv       double[2][3]    pv-vector
**
**  Returned:
**     rpv      double[2][3]    r * pv
**
**  Notes:
**
**  1) The algorithm is for the simple case where the r-matrix r is not
**     a function of time.  The case where r is a function of time leads
**     to an additional velocity component equal to the product of the
**     derivative of r and the position vector.
**
**  2) It is permissible for pv and rpv to be the same array.
**
**  Called:
**     iauRxp       product of r-matrix and p-vector
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  iauRxp(r, pv[0], rpv[0]);
  iauRxp(r, pv[1], rpv[1]);
}

// From moon98.c, renamed from iauMoon98
void moon98(double date1, double date2, double pv[2][3])
/*
**  - - - - - - - - - -
**   i a u M o o n 9 8
**  - - - - - - - - - -
**
**  Approximate geocentric position and velocity of the Moon.
**
**  This function is part of the International Astronomical Union's
**  SOFA (Standards Of Fundamental Astronomy) software collection.
**
**  Status:  support function.
**
**  n.b. Not IAU-endorsed and without canonical status.
**
**  Given:
**     date1  double         TT date part A (Notes 1,4)
**     date2  double         TT date part B (Notes 1,4)
**
**  Returned:
**     pv     double[2][3]   Moon p,v, GCRS (AU, AU/d, Note 5)
**
**  Notes:
**
**  1) The TT date date1+date2 is a Julian Date, apportioned in any
**     convenient way between the two arguments.  For example,
**     JD(TT)=2450123.7 could be expressed in any of these ways, among
**     others:
**
**            date1          date2
**
**         2450123.7           0.0       (JD method)
**         2451545.0       -1421.3       (J2000 method)
**         2400000.5       50123.2       (MJD method)
**         2450123.5           0.2       (date & time method)
**
**     The JD method is the most natural and convenient to use in cases
**     where the loss of several decimal digits of resolution is
**     acceptable.  The J2000 method is best matched to the way the
**     argument is handled internally and will deliver the optimum
**     resolution.  The MJD method and the date & time methods are both
**     good compromises between resolution and convenience.  The limited
**     accuracy of the present algorithm is such that any of the methods
**     is satisfactory.
**
**  2) This function is a full implementation of the algorithm
**     published by Meeus (see reference) except that the light-time
**     correction to the Moon's mean longitude has been omitted.
**
**  3) Comparisons with ELP/MPP02 over the interval 1950-2100 gave RMS
**     errors of 2.9 arcsec in geocentric direction, 6.1 km in position
**     and 36 mm/s in velocity.  The worst case errors were 18.3 arcsec
**     in geocentric direction, 31.7 km in position and 172 mm/s in
**     velocity.
**
**  4) The original algorithm is expressed in terms of "dynamical time",
**     which can either be TDB or TT without any significant change in
**     accuracy.  UT cannot be used without incurring significant errors
**     (30 arcsec in the present era) due to the Moon's 0.5 arcsec/sec
**     movement.
**
**  5) The result is with respect to the GCRS (the same as J2000.0 mean
**     equator and equinox to within 23 mas).
**
**  6) Velocity is obtained by a complete analytical differentiation
**     of the Meeus model.
**
**  7) The Meeus algorithm generates position and velocity in mean
**     ecliptic coordinates of date, which the present function then
**     rotates into GCRS.  Because the ecliptic system is precessing,
**     there is a coupling between this spin (about 1.4 degrees per
**     century) and the Moon position that produces a small velocity
**     contribution.  In the present function this effect is neglected
**     as it corresponds to a maximum difference of less than 3 mm/s and
**     increases the RMS error by only 0.4%.
**
**  References:
**
**     Meeus, J., Astronomical Algorithms, 2nd edition, Willmann-Bell,
**     1998, p337.
**
**     Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
**     Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663
**
**  Defined in sofam.h:
**     DAU           astronomical unit (m)
**     DJC           days per Julian century
**     DJ00          reference epoch (J2000.0), Julian Date
**     DD2R          degrees to radians
**
**  Called:
**     iauS2pv      spherical coordinates to pv-vector
**     iauPfw06     bias-precession F-W angles, IAU 2006
**     iauIr        initialize r-matrix to identity
**     iauRz        rotate around Z-axis
**     iauRx        rotate around X-axis
**     iauRxpv      product of r-matrix and pv-vector
**
**  This revision:  2021 May 11
**
**  SOFA release 2021-05-12
**
**  Copyright (C) 2021 IAU SOFA Board.  See notes at end.
*/
{
  /*
  **  Coefficients for fundamental arguments:
  **
  **  . Powers of time in Julian centuries
  **  . Units are degrees.
  */

  /* Moon's mean longitude (wrt mean equinox and ecliptic of date) */
  const double elp0 = 218.31665436, /* Simon et al. (1994). */
      elp1 = 481267.88123421, elp2 = -0.0015786, elp3 = 1.0 / 538841.0, elp4 = -1.0 / 65194000.0;
  double elp, delp;

  /* Moon's mean elongation */
  const double d0 = 297.8501921, d1 = 445267.1114034, d2 = -0.0018819, d3 = 1.0 / 545868.0,
               d4 = 1.0 / 113065000.0;
  double d, dd;

  /* Sun's mean anomaly */
  const double em0 = 357.5291092, em1 = 35999.0502909, em2 = -0.0001536, em3 = 1.0 / 24490000.0,
               em4 = 0.0;
  double em, dem;

  /* Moon's mean anomaly */
  const double emp0 = 134.9633964, emp1 = 477198.8675055, emp2 = 0.0087414, emp3 = 1.0 / 69699.0,
               emp4 = -1.0 / 14712000.0;
  double emp, demp;

  /* Mean distance of the Moon from its ascending node */
  const double f0 = 93.2720950, f1 = 483202.0175233, f2 = -0.0036539, f3 = 1.0 / 3526000.0,
               f4 = 1.0 / 863310000.0;
  double f, df;

  /*
  ** Other arguments
  */

  /* Meeus A_1, due to Venus (deg) */
  const double a10 = 119.75, a11 = 131.849;
  double a1, da1;

  /* Meeus A_2, due to Jupiter (deg) */
  const double a20 = 53.09, a21 = 479264.290;
  double a2, da2;

  /* Meeus A_3, due to sidereal motion of the Moon in longitude (deg) */
  const double a30 = 313.45, a31 = 481266.484;
  double a3, da3;

  /* Coefficients for Meeus "additive terms" (deg) */
  const double al1 = 0.003958, al2 = 0.001962, al3 = 0.000318;
  const double ab1 = -0.002235, ab2 = 0.000382, ab3 = 0.000175, ab4 = 0.000175, ab5 = 0.000127,
               ab6 = -0.000115;

  /* Fixed term in distance (m) */
  const double r0 = 385000560.0;

  /* Coefficients for (dimensionless) E factor */
  const double e1 = -0.002516, e2 = -0.0000074;
  double e, de, esq, desq;

  /*
  ** Coefficients for Moon longitude and distance series
  */
  struct termlr {
    int nd;       /* multiple of D  in argument           */
    int nem;      /*     "    "  M   "    "               */
    int nemp;     /*     "    "  M'  "    "               */
    int nf;       /*     "    "  F   "    "               */
    double coefl; /* coefficient of L sine argument (deg) */
    double coefr; /* coefficient of R cosine argument (m) */
  };

  static const struct termlr tlr[] = {
      {0, 0, 1, 0, 6.288774, -20905355.0}, {2, 0, -1, 0, 1.274027, -3699111.0},
      {2, 0, 0, 0, 0.658314, -2955968.0},  {0, 0, 2, 0, 0.213618, -569925.0},
      {0, 1, 0, 0, -0.185116, 48888.0},    {0, 0, 0, 2, -0.114332, -3149.0},
      {2, 0, -2, 0, 0.058793, 246158.0},   {2, -1, -1, 0, 0.057066, -152138.0},
      {2, 0, 1, 0, 0.053322, -170733.0},   {2, -1, 0, 0, 0.045758, -204586.0},
      {0, 1, -1, 0, -0.040923, -129620.0}, {1, 0, 0, 0, -0.034720, 108743.0},
      {0, 1, 1, 0, -0.030383, 104755.0},   {2, 0, 0, -2, 0.015327, 10321.0},
      {0, 0, 1, 2, -0.012528, 0.0},        {0, 0, 1, -2, 0.010980, 79661.0},
      {4, 0, -1, 0, 0.010675, -34782.0},   {0, 0, 3, 0, 0.010034, -23210.0},
      {4, 0, -2, 0, 0.008548, -21636.0},   {2, 1, -1, 0, -0.007888, 24208.0},
      {2, 1, 0, 0, -0.006766, 30824.0},    {1, 0, -1, 0, -0.005163, -8379.0},
      {1, 1, 0, 0, 0.004987, -16675.0},    {2, -1, 1, 0, 0.004036, -12831.0},
      {2, 0, 2, 0, 0.003994, -10445.0},    {4, 0, 0, 0, 0.003861, -11650.0},
      {2, 0, -3, 0, 0.003665, 14403.0},    {0, 1, -2, 0, -0.002689, -7003.0},
      {2, 0, -1, 2, -0.002602, 0.0},       {2, -1, -2, 0, 0.002390, 10056.0},
      {1, 0, 1, 0, -0.002348, 6322.0},     {2, -2, 0, 0, 0.002236, -9884.0},
      {0, 1, 2, 0, -0.002120, 5751.0},     {0, 2, 0, 0, -0.002069, 0.0},
      {2, -2, -1, 0, 0.002048, -4950.0},   {2, 0, 1, -2, -0.001773, 4130.0},
      {2, 0, 0, 2, -0.001595, 0.0},        {4, -1, -1, 0, 0.001215, -3958.0},
      {0, 0, 2, 2, -0.001110, 0.0},        {3, 0, -1, 0, -0.000892, 3258.0},
      {2, 1, 1, 0, -0.000810, 2616.0},     {4, -1, -2, 0, 0.000759, -1897.0},
      {0, 2, -1, 0, -0.000713, -2117.0},   {2, 2, -1, 0, -0.000700, 2354.0},
      {2, 1, -2, 0, 0.000691, 0.0},        {2, -1, 0, -2, 0.000596, 0.0},
      {4, 0, 1, 0, 0.000549, -1423.0},     {0, 0, 4, 0, 0.000537, -1117.0},
      {4, -1, 0, 0, 0.000520, -1571.0},    {1, 0, -2, 0, -0.000487, -1739.0},
      {2, 1, 0, -2, -0.000399, 0.0},       {0, 0, 2, -2, -0.000381, -4421.0},
      {1, 1, 1, 0, 0.000351, 0.0},         {3, 0, -2, 0, -0.000340, 0.0},
      {4, 0, -3, 0, 0.000330, 0.0},        {2, -1, 2, 0, 0.000327, 0.0},
      {0, 2, 1, 0, -0.000323, 1165.0},     {1, 1, -1, 0, 0.000299, 0.0},
      {2, 0, 3, 0, 0.000294, 0.0},         {2, 0, -1, -2, 0.000000, 8752.0}};

  const int NLR = (sizeof tlr / sizeof(struct termlr));

  /*
  ** Coefficients for Moon latitude series
  */
  struct termb {
    int nd;       /* multiple of D  in argument           */
    int nem;      /*     "    "  M   "    "               */
    int nemp;     /*     "    "  M'  "    "               */
    int nf;       /*     "    "  F   "    "               */
    double coefb; /* coefficient of B sine argument (deg) */
  };

  static const struct termb tb[] = {
      {0, 0, 0, 1, 5.128122},    {0, 0, 1, 1, 0.280602},    {0, 0, 1, -1, 0.277693},
      {2, 0, 0, -1, 0.173237},   {2, 0, -1, 1, 0.055413},   {2, 0, -1, -1, 0.046271},
      {2, 0, 0, 1, 0.032573},    {0, 0, 2, 1, 0.017198},    {2, 0, 1, -1, 0.009266},
      {0, 0, 2, -1, 0.008822},   {2, -1, 0, -1, 0.008216},  {2, 0, -2, -1, 0.004324},
      {2, 0, 1, 1, 0.004200},    {2, 1, 0, -1, -0.003359},  {2, -1, -1, 1, 0.002463},
      {2, -1, 0, 1, 0.002211},   {2, -1, -1, -1, 0.002065}, {0, 1, -1, -1, -0.001870},
      {4, 0, -1, -1, 0.001828},  {0, 1, 0, 1, -0.001794},   {0, 0, 0, 3, -0.001749},
      {0, 1, -1, 1, -0.001565},  {1, 0, 0, 1, -0.001491},   {0, 1, 1, 1, -0.001475},
      {0, 1, 1, -1, -0.001410},  {0, 1, 0, -1, -0.001344},  {1, 0, 0, -1, -0.001335},
      {0, 0, 3, 1, 0.001107},    {4, 0, 0, -1, 0.001021},   {4, 0, -1, 1, 0.000833},
      {0, 0, 1, -3, 0.000777},   {4, 0, -2, 1, 0.000671},   {2, 0, 0, -3, 0.000607},
      {2, 0, 2, -1, 0.000596},   {2, -1, 1, -1, 0.000491},  {2, 0, -2, 1, -0.000451},
      {0, 0, 3, -1, 0.000439},   {2, 0, 2, 1, 0.000422},    {2, 0, -3, -1, 0.000421},
      {2, 1, -1, 1, -0.000366},  {2, 1, 0, 1, -0.000351},   {4, 0, 0, 1, 0.000331},
      {2, -1, 1, 1, 0.000315},   {2, -2, 0, -1, 0.000302},  {0, 0, 1, 3, -0.000283},
      {2, 1, 1, -1, -0.000229},  {1, 1, 0, -1, 0.000223},   {1, 1, 0, 1, 0.000223},
      {0, 1, -2, -1, -0.000220}, {2, 1, -1, -1, -0.000220}, {1, 0, 1, 1, -0.000185},
      {2, -1, -2, -1, 0.000181}, {0, 1, 2, 1, -0.000177},   {4, 0, -2, -1, 0.000176},
      {4, -1, -1, -1, 0.000166}, {1, 0, 1, -1, -0.000164},  {4, 0, 1, -1, 0.000132},
      {1, 0, -1, -1, -0.000119}, {4, -1, 0, -1, 0.000115},  {2, -2, 0, 1, 0.000107}};

  const int NB = (sizeof tb / sizeof(struct termb));

  /* Miscellaneous */
  int n, i;
  double t, elpmf, delpmf, vel, vdel, vr, vdr, a1mf, da1mf, a1pf, da1pf, dlpmp, slpmp, vb, vdb, v,
      dv, emn, empn, dn, fn, en, den, arg, darg, farg, coeff, el, del, r, dr, b, db, gamb, phib,
      psib, epsa, rm[3][3];

  /* ------------------------------------------------------------------ */

  /* Centuries since J2000.0 */
  t = ((date1 - DJ00) + date2) / DJC;

  /* --------------------- */
  /* Fundamental arguments */
  /* --------------------- */

  /* Arguments (radians) and derivatives (radians per Julian century)
     for the current date. */

  /* Moon's mean longitude. */
  elp = DD2R * fmod(elp0 + (elp1 + (elp2 + (elp3 + elp4 * t) * t) * t) * t, 360.0);
  delp = DD2R * (elp1 + (elp2 * 2.0 + (elp3 * 3.0 + elp4 * 4.0 * t) * t) * t);

  /* Moon's mean elongation. */
  d = DD2R * fmod(d0 + (d1 + (d2 + (d3 + d4 * t) * t) * t) * t, 360.0);
  dd = DD2R * (d1 + (d2 * 2.0 + (d3 * 3.0 + d4 * 4.0 * t) * t) * t);

  /* Sun's mean anomaly. */
  em = DD2R * fmod(em0 + (em1 + (em2 + (em3 + em4 * t) * t) * t) * t, 360.0);
  dem = DD2R * (em1 + (em2 * 2.0 + (em3 * 3.0 + em4 * 4.0 * t) * t) * t);

  /* Moon's mean anomaly. */
  emp = DD2R * fmod(emp0 + (emp1 + (emp2 + (emp3 + emp4 * t) * t) * t) * t, 360.0);
  demp = DD2R * (emp1 + (emp2 * 2.0 + (emp3 * 3.0 + emp4 * 4.0 * t) * t) * t);

  /* Mean distance of the Moon from its ascending node. */
  f = DD2R * fmod(f0 + (f1 + (f2 + (f3 + f4 * t) * t) * t) * t, 360.0);
  df = DD2R * (f1 + (f2 * 2.0 + (f3 * 3.0 + f4 * 4.0 * t) * t) * t);

  /* Meeus further arguments. */
  a1 = DD2R * (a10 + a11 * t);
  da1 = DD2R * al1;
  a2 = DD2R * (a20 + a21 * t);
  da2 = DD2R * a21;
  a3 = DD2R * (a30 + a31 * t);
  da3 = DD2R * a31;

  /* E-factor, and square. */
  e = 1.0 + (e1 + e2 * t) * t;
  de = e1 + 2.0 * e2 * t;
  esq = e * e;
  desq = 2.0 * e * de;

  /* Use the Meeus additive terms (deg) to start off the summations. */
  elpmf = elp - f;
  delpmf = delp - df;
  vel = al1 * sin(a1) + al2 * sin(elpmf) + al3 * sin(a2);
  vdel = al1 * cos(a1) * da1 + al2 * cos(elpmf) * delpmf + al3 * cos(a2) * da2;

  vr = 0.0;
  vdr = 0.0;

  a1mf = a1 - f;
  da1mf = da1 - df;
  a1pf = a1 + f;
  da1pf = da1 + df;
  dlpmp = elp - emp;
  slpmp = elp + emp;
  vb = ab1 * sin(elp) + ab2 * sin(a3) + ab3 * sin(a1mf) + ab4 * sin(a1pf) + ab5 * sin(dlpmp) +
       ab6 * sin(slpmp);
  vdb = ab1 * cos(elp) * delp + ab2 * cos(a3) * da3 + ab3 * cos(a1mf) * da1mf +
        ab4 * cos(a1pf) * da1pf + ab5 * cos(dlpmp) * (delp - demp) +
        ab6 * cos(slpmp) * (delp + demp);

  /* ----------------- */
  /* Series expansions */
  /* ----------------- */

  /* Longitude and distance plus derivatives. */
  for (n = NLR - 1; n >= 0; n--) {
    dn = (double)tlr[n].nd;
    emn = (double)(i = tlr[n].nem);
    empn = (double)tlr[n].nemp;
    fn = (double)tlr[n].nf;
    switch (abs(i)) {
      case 1:
        en = e;
        den = de;
        break;
      case 2:
        en = esq;
        den = desq;
        break;
      default:
        en = 1.0;
        den = 0.0;
    }
    arg = dn * d + emn * em + empn * emp + fn * f;
    darg = dn * dd + emn * dem + empn * demp + fn * df;
    farg = sin(arg);
    v = farg * en;
    dv = cos(arg) * darg * en + farg * den;
    coeff = tlr[n].coefl;
    vel += coeff * v;
    vdel += coeff * dv;
    farg = cos(arg);
    v = farg * en;
    dv = -sin(arg) * darg * en + farg * den;
    coeff = tlr[n].coefr;
    vr += coeff * v;
    vdr += coeff * dv;
  }
  el = elp + DD2R * vel;
  del = (delp + DD2R * vdel) / DJC;
  r = (vr + r0) / DAU;
  dr = vdr / DAU / DJC;

  /* Latitude plus derivative. */
  for (n = NB - 1; n >= 0; n--) {
    dn = (double)tb[n].nd;
    emn = (double)(i = tb[n].nem);
    empn = (double)tb[n].nemp;
    fn = (double)tb[n].nf;
    switch (abs(i)) {
      case 1:
        en = e;
        den = de;
        break;
      case 2:
        en = esq;
        den = desq;
        break;
      default:
        en = 1.0;
        den = 0.0;
    }
    arg = dn * d + emn * em + empn * emp + fn * f;
    darg = dn * dd + emn * dem + empn * demp + fn * df;
    farg = sin(arg);
    v = farg * en;
    dv = cos(arg) * darg * en + farg * den;
    coeff = tb[n].coefb;
    vb += coeff * v;
    vdb += coeff * dv;
  }
  b = vb * DD2R;
  db = vdb * DD2R / DJC;

  /* ------------------------------ */
  /* Transformation into final form */
  /* ------------------------------ */

  /* Longitude, latitude to x, y, z (AU). */
  iauS2pv(el, b, r, del, db, dr, pv);

  /* IAU 2006 Fukushima-Williams bias+precession angles. */
  iauPfw06(date1, date2, &gamb, &phib, &psib, &epsa);

  /* Mean ecliptic coordinates to GCRS rotation matrix. */
  iauIr(rm);
  iauRz(psib, rm);
  iauRx(-phib, rm);
  iauRz(-gamb, rm);

  /* Rotate the Moon position and velocity into GCRS (Note 6). */
  iauRxpv((const double (*)[3])rm, pv, pv);
}
